文档库 最新最全的文档下载
当前位置:文档库 › Oracle面试常见题

Oracle面试常见题

Oracle面试常见题
Oracle面试常见题

Oracle常见题

1.oracle的特点?(选择记忆,理解)

?ORACLE7.X以来引入了共享SQL和多线索服务器体系结构。这减少了ORACL E的资源占用,并增强了ORACLE的能力,使之在低档软硬件平台上用较少的资源就可以支持更多的用户,而在高档平台上可以支持成百上千个用户。

?提供了基于角色(ROLE)分工的安全保密管理。在数据库管理功能、完整性检查、安全性、一致性方面都有良好的表现。

?支持大量多媒体数据,如二进制图形、声音、动画以及多维数据结构等。

?提供了与第三代高级语言的接口软件PRO*系列,能在C,C++等主语言中嵌入S QL语句及过程化(PL/SQL)语句,对数据库中的数据进行操纵。加上它有许多优秀的前台开发工具如POWER BUILD、SQL*FORMS、VISIA BASIC 等,可以快速开发生成基于客户端PC 平台的应用程序,并具有良好的移植性。

?提供了新的分布式数据库能力。可通过网络较方便地读写远端数据库里的数据,并有对称复制的技术。支持各种分布式功能,特别是支持Internet应用。

?功能强大,层次清晰,安全机制好,跨平台,数据操作,系统管理,安全性,集群技术,分布式应用,商业智能

?具有完整的数据管理功能。

?作为一个应用开发环境,Oracle提供了一套界面友好、功能齐全的数据库开发工具。

?Oracle使用PL/SQL语言执行各种操作,具有可开放性、可移植性、可伸缩性等功能。

?可用性强

?可扩展性强

?数据安全性强

?稳定性强

?无范式要求,可根据实际系统需求构造数据库。

?采用标准的SQL结构化查询语言。

?具有丰富的开发工具,覆盖开发周期的各阶段。

?支持大型数据库,数据类型支持数字、字符、大至4GB的二进制数据,为数据库的面向存储提供数据支持。

?具有第四代语言的开发工具(SQL*formS、SQL*REPORTS、SQL*MENU等)。

?具有字符界面和图形界面,易于开发。

?通过SQL*DBA控制用户权限,提供数据保护功能,监控数据库的运行状态,调整数据缓冲区的大小。

?分布优化查询功能。

?具有数据透明、网络透明,支持异种网络、异构数据库系统。并行处理采用动态数据分片技术。

?支持客户机/服务器体系结构及混合的体系结构(集中式、分布式、客户机/服务器)。?实现了两阶段提交、多线索查询手段。

?支持多种系统平台(HPUX、SUNOS、OSF/1、VMS、WINDOWS、WINDOWS/NT、

OS/2)。

?.数据安全保护措施:没有读锁,采取快照SNAP方式完全消除了分布读写冲突。自动检测死锁和冲突并解决。

?数据安全级别为C2级(最高级)。

?数据库内模支持多字节码制,支持多种语言文字编码。

?具有面向制造系统的管理信息系统和财务系统应用系统。

?在中国的销售份额占50%以上。

2.一个完整的数据库系统包括哪几个方面?

包括以下三个方面:数据库管理系统(DBMS)、数据库、数据库服务器

(database management system)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,简称dbms。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过dbms访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。它提供多种功能,可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。它使用户能方便地定义和操纵数据,维护数据的安全性和完整性,以及进行多用户下的并发控制和恢复数据库。

3.oracle数据库进程分为哪几种,分别是什么?它们中都包括哪些进程?

oracle数据库进程分为用户进程和服务器进程。

用户进程是在客户机内存上运行的程序,比如“企业管理器”和“SQL Plus”。用户进程向服务器进程提出操作请求。

服务器进程包括:

系统监控进程SMON(数据库系统启动时执行恢复性工作,对有故障数据库进行恢复)。

进程监控进程PMON(用于恢复失败的用户进程)

数据库写入进程DBWR(将修改后的数据块内容写回数据库)

日志写入进程LGWR(将内存中的日志内容写入日志文件)

归档进程ARCH(当数据库服务器以归档方式运行时调用该进程完成日志归档)

检查点进程CKPT(标识检查点,用于减少数据库恢复所需要的时间)

恢复进程RECO(用于分布式数据库中的失败处理)

锁进程LCKn(在并行服务器模式下确保数据的一致性)

快照进程SNPn(进行快照刷新)

调度进程Dnnn(负责把用户进程路由到可用的服务器进程进行处理)

4.通过本机访问他人的数据库,如何配置?

有两种方式:

第一种,通过企业管理器。右键“数据库”节点“将数据库添加到树”选择“手动添加数据库”输入需要访问数据库服务器的IP地址、端口号和SID(即数据库服务器的数据库名称),网络服务名可以任意取。“确定”。

第二种:通过数据库服务器暴露监听端口,然后客户端配置命名方法配置和本地Net服务名配置。开始程序Oracle configuration and Migration Tools Net Configuration Assistant 然后分别配置数据库服务器的监听程序配置,客户端的命名方法配置和本地Net服务名配置。(详细配置请参考Oracle 9i基础的第二章)

5.oracle的默认表空间有哪些,它们的作用分别是?默认的大小?

oracle的默认表空间有以下几种:

CWMLITE(用于联机分析处理OLAP,20MB)

DRSYS(用于存放与工作区间设置有关的信息,20MB)

EXAMPLE(实例表空间,存放实例信息,150MB左右)

INDEX(索引表空间,存放数据库索引信息,25MB)

ODM(数据挖掘用户,20MB)

XDB(XML数据库,39MB左右)

SYSTEM(系统表空间,存放表空间名称,所包含数据文件等管理信息,400MB)

TEMP(临时表空间,存储临时表,40MB)

TOOLS(工具表空间,存放数据库工具软件所需要的数据库对象,10MB)

UNDOTBS1(回滚表空间,存放数据库恢复信息,200MB)

USERS(用户表空间,存放用户私有信息,25MB)

新建一个表空间它的默认大小是5M。

6.oracle下有几种文件,每种文件的作用分别是什么,它们的存放路径?

oracle下有三种文件,分别是:

数据文件,用于存放所有的数据,以DBF为扩展名。

日志文件,记录了对数据库进行的所有操作,以LOG为扩展名。

控制文件,记录了数据库所有文件的控制信息,以CTL为扩展名。

存放路径:[数据库安装路径]\oradata文件夹下。

7.oracle下有几种日志文件,它们的作用分别是?

Oracle数据库有两种日志工作模式,它们分别是非归档(联机)日志,归档日志

数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里。一般数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行。

基本情况和上面是一致的,唯一不同在于,当发生日志切换的时候,被切换的日志会进行归档。比如,当前在使用联机重做日志1,当1写满的时候,发生日志切换,开始写联机重做日志2,这时联机重做日志1的内容会被拷贝到另外一个指定的目录下。这个目录叫做归档目录,拷贝的文件叫归档重做日志。

他们的区别在于一个归档,一个不归档。数据库使用归档方式运行时才可以进行灾难性恢复。

8.如何在unix下安装oracle?

参照老师给的《Oracle9i在linux下的安装.docx》

9. sql语句分为几大类?

DML(data manipulation language):它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言

DDL(data definition language):DDL比DML要多,主要的命令有CREATE、ALTER、DROP

等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用

DCL(Data Control Language)是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner 或db_securityadmin等人员才有权力执行DCL。

10. 管理用户sys、system和sysman的区别?

sysman 一般是OMS时的管理员用户,如果不使用OMS的话,可以不用

11. Oracle数据库服务器启动和关闭的方式都有哪些,分别有什么特点?

12. Oracle数据库服务都有哪些?

13. 哪个初始化参数可是使oracle数据库的默认连接数更改为200?

Oracle 9i中默认的连接数为150,要修改这个配置文件,需要修改SPFILEORCL.ORA文件中的processes的值。

14. 什么是事务,事务的特征是?

事务是当前主流数据库系统普遍采用的并发控制机制。

事务是oracle9i中进行数据库操作的基本单位,在pl/sql程序中有三个事务处理命令Commit命令rollback命令savepoint命令

为了保证数据完整性,数据库系统要求事务具有以下四个特征:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability),简称为ACID特征。

15. 什么是锁,锁机制有哪几种,分别说明?

数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。

加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,

先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。

锁的机制分为两种:乐观锁和悲观锁

悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。

相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。

16. Oracle中的锁有几类?分别是什么?

根据保护的对象不同,Oracle数据库锁可以分为以下几大类:DML锁(data locks,数据锁),用于保护数据的完整性;DDL锁(dictionary locks,字典锁),用于保护数据库对象的结构,如表、索引等的结构定义;内部锁和闩(internal locks and latches),保护数据库的内部结构。DML锁的目的在于保证并发情况下的数据完整性。在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。

17. Oracle数据方案对象有哪几种?作用分别是?

18. 表按功能可以分为哪几类?

系统表:用于存储和管理数据库字典表,用户数据和数据库本身的数据。

用户表:用于存放用户的数据信息。默认简历的数据表就是用户表。

19. Oracle的数据类型有哪些?

数据类型含义

char 定长的字符型数据,最大长度可达2KB

nchar 存储Unicode字符集的定长字符型数据,最大长度为2KB

Varchar2 可变长的字符型数据,最大长度可达4000个字符

Nvarchar2 存储Unicode字符集的变长字符型数据,最大长度为4KB

number 存储整型或浮点型数据

Date 存储日期数据

Long 存储最大长度为2GB的变长字符数据

Raw 存储非结构化数据的变长字符数据,最长为2KB

Long Raw 存储非结构化数据的变长字符数据,最长为2GB

Rowid 存储表中列的物理地址的二进制数据,占用固定的10个字节

Blob二进制大对象,最大长度为4GB

Clob 字符大对象,最大长度为4GB

Nclob 存储多达4GB的Unicode字符数据

Bfile 把非结构化的二进制数据存储在数据库以外的操作系统文件中

Urowid 存储表示任何类型列地址的二进制数据

float 存储浮点数

20. Oracle中有几种约束条件?分别描述。

NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值.

CHECK (检查)--检查在约束中指定的条件是否得到了满足.

UNIQUE (唯一)--保证在指定的列中没有重复值.在该表中每一个值或者每一组值都将是唯一的.

PRIMARY KEY (主键)--用来唯一的标识出表的每一行,并且防止出现NULL值,一个表只能有一个主键约束.

POREIGN KEY (外部键)--通过使用公共列在表之间建立一种父子(parent-child)关系,在表上定义的外部键可以指向主键或者其他表的唯一键.

21. Oracle的安全机制有哪两类?

系统安全机制:是指在整个的数据库系统级控制数据库的存取和使用的机制;

数据安全机制:是指在对象级控制数据库的存取和使用的机制。

22. Oracle预定义的角色有哪些?

1. CONNECT

2. RESOURCE

3. DBA

4. EXP_FULL_DATABASE

5. IMP_FULL_DATABASE

6. DELETE_CATALOG_ROLE

7. EXECUTE_CATALOG_ROLE

8. SELECT_CATALOG_ROLE

说明:1-3是为了同ORACLE老版本中的概念相兼容而提供的,不能只依赖于这些ROLE 4-5是为了使用Import和Export实用程序的方便而提供的

6-8是为了数据字典视图和包的卸载而提供的

CONNECT角色:--是授予最终用户的典型权利,最基本的

ALTER SESSION --修改会话

CREATE CLUSTER --建立聚簇

CREATE DATABASE LINK --建立数据库链接

CREATE SEQUENCE --建立序列

CREATE SESSION --建立会话

CREATE SYNONYM --建立同义词

CREATE VIEW --建立视图

RESOURCE角色:--是授予开发人员的

CREATE CLUSTER --建立聚簇

CREATE PROCEDURE --建立过程

CREATE SEQUENCE --建立序列

CREATE TABLE --建表

CREATE TRIGGER --建立触发器

CREATE TYPE --建立类型

DBA角色:

拥有系统所有系统级权限

IMP_FULL_DATABASE角色、EXP_FULL_DATABASE角色:

BACKUP ANY TABLE --备份任何表

EXECUTE ANY PROCEDURE --执行任何操作

SELECT ANY TABLE --查询任何表

DELETE_CATALOG_ROLE角色:

这个角色是Oracle8新增加的,如果授予用户这个角色,用户就可以从表sys.aud$中删除记录,sys.aud$表中记录着审计后的记录,使用这个角色可以简化审计踪迹管理。

SELECT_CATALOG_ROLE角色、EXECUTE_CATALOG_ROLE角色:

SELECT_CATALOG_ROLE角色具有从数据字典查询的权利,

EXECUTE_CATALOG_ROLE角色具有从数据字典中执行部分过程和函数的权利。

23. Oracle中用户和角色之间的关系?

Oracle使用角色的方法来限定各种用户的权力,在系统中可以有许多用户,各种用户有各种不同的角色,拥有不同的权力。实践表明与其很明确的赋一组权限给一个角色,不如赋给一个角色,然后把这个角色赋给一组用户。这样就可以实现动态的权限管理,当这组用户的

权限必须改变时,只需改变角色的权限就可以了。

24. Oracle数据库常见的故障有?

25. Oracle数据库备份和恢复的内容为?

1.初始化参数文件

2.控制文件

3.数据文件

4.联机重做日志文件

5.归档日志文件

26. Oracle如何进行备份和恢复,自动和定时的备份/恢复应该怎么做?

(1)表方式(T方式),将指定表的数据导出。

(2)用户方式(U方式),将指定用户的所有对象及数据导出。

(3)全库方式(Full方式),将数据库中的所有对象导出。

自动和定时可以在任务计划里设置

27. Truncate与delete的区别?(重点:性能上的区别)

1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE 将被撤销,而TRUNCATE则不会被撤销。

2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。

3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。

4、TRUNCATE不能触发任何DELETE触发器。

5、不能授予任何人清空他人的表的权限。

6、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。

7、不能清空父表。TRUNCA TE TABLE (schema)table_name DROP(REUSE) STORAGE 在默认是DROP STORAGE 当使用DROP STORAGE时将缩短表和表索引,将表收缩到最小范围,并重新设置NEXT参数。REUSE STORAGE不会缩短表或者调整NEXT参数在特殊情况下使用REUSE ST

DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的的删除操作作为事务记录在日志中保存以便进行进行回滚操作。

TRUNCATE TABLE 则一次性地从表中删除所有的数据页并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。

28. 数据库设计的目标是什么?

(1)实现数据共享。

数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。

(2)减少数据的冗余度。

同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据,减少了数据冗余,维护了数据的一致性。

(3)数据的独立性。

数据的独立性包括数据库中数据库的逻辑结构和应用程序相互独立,也包括数据物理结构的变化不影响数据的逻辑结构。

(4)数据实现集中控制。

文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。

(5)数据一致性和可维护性,以确保数据的安全性和可靠性。

主要包括:①安全性控制:以防止数据丢失、错误更新和越权使用;②完整性控制:保证数据的正确性、有效性和相容性;③并发控制:使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用;④故障的发现和恢复:由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏

29. 数据库设计的步骤?

(1)需求分析

(2)概念设计

(3)逻辑设计

(4)物理设计

(5)验证设计

(1)需求分析;调查和分析用户的业务活动和数据的使用情况,弄清所用数据的种类、范围、数量以及它们在业务活动中交流的情况,确定用户对数据库系统的使用要求和各种约束条件等,形成用户需求规约。

(2)概念设计;对用户要求描述的现实世界(可能是一个工厂、一个商场或者一个学校等),通过对其中住处的分类、聚集和概括,建立抽象的概念数据模型。这个概念模型应反映现实世界各部门的信息结构、信息流动情况、信息间的互相制约关系以及各部门对信息储存、查询和加工的要求等。所建立的模型应避开数据库在计算机上的具体实现细节,用一种抽象的形式表示出来。以扩充的实体—(E-R模型)联系模型方法为例,第一步先明确现实世界各部门所含的各种实体及其属性、实体间的联系以及对信息的制约条件等,从而给出各部门内所用信息的局部描述(在数据库中称为用户的局部视图)。第二步再将前面得到的多个用户的局部视图集成为一个全局视图,即用户要描述的现实世界的概念数据模型。

(3)逻辑设计;主要工作是将现实世界的概念数据模型设计成数据库的一种逻辑模式,即适应于某种特定数据库管理系统所支持的逻辑数据模式。与此同时,可能还需为各种数据处理应用领域产生相应的逻辑子模式。这一步设计的结果就是所谓“逻辑数据库”。

(4)物理设计;根据特定数据库管理系统所提供的多种存储结构和存取方法等依赖于具体计算机结构的各项物理设计措施,对具体的应用任务选定最合适的物理存储结构(包括文件类型、索引结构和数据的存放次序与位逻辑等)、存取方法和存取路径等。这一步设计的结果就是所谓“物理数据库”。

(5)验证设计;在上述设计的基础上,收集数据并具体建立一个数据库,运行一些典型的应用任务来验证数据库设计的正确性和合理性。一般,一个大型数据库的设计过程往往需要经过多次循环反复。当设计的某步发现问题时,可能就需要返回到前面去进行修改。因此,在做上述数据库设计时就应考虑到今后修改设计的可能性和方便性。

30. 简述数据库设计的三大范式,并举例说明。

第一范式(1NF):在关系模式R中的每一个具体关系r中,如果每个属性值都是不可再分的最小数据单位,则称R是第一范式的关系。

第二范式(2NF):要求实体的属性完全依赖于主关键字。所谓“完全依赖”是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。简而言之,第二范式就是非主属性非部分依赖于主关键字。

第三范式(3NF):要求一个数据库表中不包含已在其他表中包含的非主关键字信息。

如果关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系R是属于第三范式的。

31. 什么是PL/SQL,PL/SQL的运行环境?PL/SQL的程序结构?

在甲骨文数据库管理方面,plsql是对结构化查询语言(SQL)的过程语言扩展。plsql 的目的是联合数据库语言和过程语言。plsql的基本单位叫做一个区段,由三个部份组

成:一个申明部份,一个可运行部份,和排除-构建部分。因为plsql允许混合SQL 申明和过程结构,因此可以在将申明发送到甲骨文系统去执行之前使用plsql区段和副程序来组合SQL申明,没有plsql,甲骨文需要就每次处理SQL申明,在网络环境中,这将影响交通流量,而且增加响应时间。plsql区段只被编译一次并且以可运行的形式储存,以降低响应时间。

PL/SQL块结构

PL/SQL是一种块结构的语言,组成PL/SQL程序的单元是逻辑块,一个PL/SQL 程序包含了一个或多个逻辑块,每个块都可以划分为三个部分。与其他语言相同,变量在使用之前必须声明,PL/SQL提供了独立的专门用于处理异常的部分,下面描述了PL/SQ L块的不同部分:

声明部分(Declaration section)

声明部分包含了变量和常量的数据类型和初始值。这个部分是由关键字DECLARE开始,如果不需要声明变量或常量,那么可以忽略这一部分;需要说明的是游标的声明也在这一部分。

执行部分(Executable section)

执行部分是PL/SQL块中的指令部分,由关键字BEGIN开始,所有的可执行语句都放在这一部分,其他的PL/SQL块也可以放在这一部分。

异常处理部分(Exception section)

这一部分是可选的,在这一部分中处理异常或错误,对异常处理的详细讨论我们在后面进行。

PL/SQL块语法

[DECLARE]

---declaration statements

BEGIN

---executable statements

[EXCEPTION]

---exception statements

END

32. 什么是游标?

游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果

每个游标区都有一个名字

用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理

主语言是面向记录的,一组主变量一次只能存放一条记录

仅使用主变量并不能完全满足SQL语句向应用程序输出数据的要求

33. 什么是存储过程?它的语法?

sql语句执行的时候要先编译,然后执行。存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。

CREATE PROCEDURE [拥有者.]存储过程名[;程序编号]

[(参数#1,…参数#1024)]

[WITH

{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}

]

[FOR REPLICATION]

AS 程序行

其中存储过程名不能超过128个字。每个存储过程中最多设定1024个参数

(SQL Server 7.0以上版本),参数的使用方法如下:

@参数名数据类型 [VARYING] [=内定值] [OUTPUT]

每个参数名前要有一个“@”符号,每一个存储过程的参数仅为该程序内部使用,参数的类型除了IMAGE外,其他SQL Server所支持的数据类型都可使用。

[=内定值]相当于我们在建立数据库时设定一个字段的默认值,这里是为这个参数设定默认值。[OUTPUT]是用来指定该参数是既有输入又有输出值的,也就是在调用了这个存储过程时,如果所指定的参数值是我们需要输入的参数,同时也需要在结果中输出的,则该项必须为OUTPUT,而如果只是做输出参数用,可以用CURSOR,同时在使用该参数时,必须指定VARYING和OUTPUT这两个语句。

例子:

CREATE PROCEDURE order_tot_amt @o_id int,@p_tot int output AS

SELECT @p_tot = sum(Unitprice*Quantity)

FROM orderdetails

WHERE ordered=@o_id

例子说明:

该例子是建立一个简单的存储过程order_tot_amt,这个存储过程根据用户输入的定单ID号码(@o_id),由定单明细表(orderdetails)中计算该定单销售总额[单价(Unitprice)*数量(Quantity)],这一金额通过@p_tot这一参数输出给调用这一存储过程的程序。

34. Oracle中异常处理分为哪几部分?

在设计PL/SQL程序时,经常会发生这样或那样的错误,异常处理就是针对错误进行处理的程序段,Oracle 9i中的异常处理分为系统预定义异常处理和自定义异常处理两部分。

系统预定义异常处理

系统预定义异常处理是针对PL/SQL程序编译、执行过程中发生的问题进行处理的程序。下列代码为正确代码,在【SQLPlus Worksheet】中能够顺利执行。

――――――――――――――――――――――――――――――――――――― set serveroutput on

declare

tempno integer:=90;

begin

tempno:=tempno+1;

end;

―――――――――――――――――――――――――――――――――――――

【配套程序位置】:第9章 correctplsql.sql。

下列代码为错误代码,在【SQLPlus Worksheet】中的执行结果如图9.56所示。

【配套程序位置】:第9章 wrongplsql.sql。

由于代码有错误,因此将激活系统预定义的异常处理,并得出如下提示信息。

Oracle 9i提供了很多异常处理,读者可以尝试修改可以正常运行的程序,并执行修改后的程序,就可以发现调用了哪些异常处理,下面着重介绍如何自定义异常处理。

自定义异常处理

1. 定义异常处理

定义异常处理的语法如下:

declare

异常名 exception;

2. 触发异常处理

触发异常处理的语法如下:

raise 异常名;

3. 处理异常

触发异常处理后,可以定义异常处理部分,语法如下:

Exception

When 异常名1 then

异常处理语句段1;

When 异常名2 then

异常处理语句段2;

35. PLSQL复合数据类型有哪些?

在pl/sql 中复合数据类型的声明共有5种方式!下面分别阐述其特点:

一、%type属性

让变量与相应数据表中字段的类型一致。如:

在表xs中包含xh列,声明一个变量my_xh与xh列具有相同的数据类型。

my_xh xs.xh%type;

优点:

不必知道xh列的确切数据类型。

xh列的数据类型的改变,my_xh列的数据类型自动改变。

二、%rowtype属性(隐式申明记录)

声明一个记录类型的变量,与与对应表的行数据具有相同的名称和数据类型。例子如下:声明一个记录名为cj_rec,与xs_kc表具有相同的名称和数据类型。

DECLARE cj_rec XS_KC%ROWTYPE;

三、记录类型(显示申明记录)

显式定义记录是在PL/SQL程序块中创建记录变量之前在声明部分定义。语法如下:TYPE record_type IS RECORD(

Field1 type1 [NOT NULL] [:= exp1 ],

Field2 type2 [NOT NULL] [:= exp2 ],

. . . . . .

Fieldn typen [NOT NULL] [:= expn ] ) ;

例子如下

TYPE xs_rec IS RECORD(

xh number(2) NOT NULL:=1,

xm char(8)

);

四、定义一维表类型

Type 要定义的类型的名字is table of type index by binary_integer

例:定义名为tabletype1和tabletype2的两个一维数组,table1 和table2 分别是两种表类型变量。

Declare

type tabletype1 is table of varchar2(4) index by binary_integer;

type tabletype2 is table of scott.testtable.recordnumber%type index by binary_integer;

table1 tabletype1;

table2 tabletype2;

begin

table1(1):='大学';

table1(2):='大专';

table2(1):=88;

table2(2):=55;

dbms_output.put_line(table1(1)||table2(1));

dbms_output.put_line(table1(2)||table2(2));

end;

五、定义多维表类型

Type 要定义的类型的名字is table of %rowtype index by binary_integer 例

Declare

type tabletype1 is table of testtable%rowtype index by binary_integer;

table1 tabletype1;

begin

select * into table1(1)

from scott.testtable

where recordnumber=60;

dbms_output.put_line(table1(1).recordnumber||table1(1).currentdate);

end;

36.Oracle性能优化点有哪些?

1.应用程序优化(主要是SQL优化)。

2.共享池区优化。

3.数据库缓冲区高速缓存优化。

4.重做日志缓冲区及杂项优化。

5.数据库优化。

6.并行查询优化。

7.争用优化。

8.I/O优化

9.操作系统优化。

37.常用SQL优化技巧有哪些?

1.建议不用“*”来代替所有列名。

SELECT语句中可以用“*”来列出某个表的所有列名,但是这样的写法对Oracle系统来说会存在解析的动态问题。Oracle系统会通过查询数据字典来将“*”转换成表的所有列名,这自然会消耗系统时间。建议在写SELECT语句时,采用与访问表有关的实际列名。

2.在全表进行删除时,用TRUNCATE代替DELETE。

当用DELETE语句删除表中的数据行时,Oracle会使用撤销表空间来存放恢复的信息。在这期间,如果用户没有发出COMMIT语句,而是发出ROLLBACK语句,Oracle系统会将数据恢复到删除之前的状态。当用户使用TRUNCATE语句对表的数据进行删除时,系统不会将被删除的数据写到回滚段中,速度明显比DELETE快。所以当希望对全局进行删除时,采用TRUNCATE命令更加有效。

3.在确保完整性的情况下多用COMMIT语句。

COMMIT所释放的资源如下:

●回滚段上用于恢复数据的信息,撤销表空间也只做短暂的保留。

●被程序语句获得的锁。

● Redo log buffer中的空间。

● Oracle为管理上述资源的内部花费。

4.尽量减少表的查询次数。

5.EXISTS代替IN,NOT EXISTS代替NOT IN。

... where column in(select * from ... where ...);

... where exists (select 'X' from ...where ...);

通过使用EXISTS,Oracle系统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间。Oracle系统在执行IN子查询时,首先执行子查询,并将获得的结果列表存放在在一个加了索引的临时表中。在执行子查询之前,系统先将主查询挂起,待子查询执行完毕,存放在临时表中以后再执行主查询。这也就是使用EXISTS比使用IN通常查询速度快的原因。

6.驱动表的选择。

驱动表是指被最先访问的表。

示例:SELECT https://www.wendangku.net/doc/7517323097.html,,B.MANAGER FROM WORKER A,LOGGING B WHERE A.LOGGING=B.LOGGING; LOGGING表的logging列创建了索引。

WORKER表的LOGGING列没有索引。

7.WHERE子句的连接顺序。

Oracle采用自下而上的顺序解析WHERE子句。根据这个原理,表之间的连接必须写在其

他WHERE条件之前。那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾,也就是在表进行连接操作以前,过滤掉得记录数越多越好。

8.绝对避免在order by子句中使用表达式。

仔细检查order by语句以找出非索引项或者表达式,它们会降低性能。

38.Oracle里面的索引类型有哪些?如何创建这些索引?

●b*tree索引:几乎所有的关系型数据库中都有b*tree类型索引,也是被最多使用

的。其树结构与二叉树比较类似,根据rid快速定位所访问的行。

●反向索引:反转了b*tree索引码中的字节,是索引条目分配更均匀,多用于并行服

务器环境下,用于减少索引叶的竞争。

●降序索引:8i中新出现的索引类型,针对逆向排序的查询。

●位图索引:使用位图来管理与数据行的对应关系,多用于OLAP系统。

●函数索引:这种索引中保存了数据列基于function返回的值,在select * from

table where function(column)=value这种类型的语句中起作用。

创建索引的语法:

(1)B*Tree索引。

Create index indexname on tablename(columnname[columnname...]) (2)反向索引。

Create index indexname on tablename(columnname[columnname...]) reverse (3)降序索引。

Create index indexname on tablename(columnname DESC[columnname...]) (4)位图索引。

Create BITMAP index indexname on tablename(columnname[columnname ...]

(5)函数索引。

Create index indexname on tablename(functionname(columnname))

注意:创建索引后要分析索引才能起作用。

analyze index indexname compute statistics;

39.简述B*Tree索引。

B*Tree索引:最常见的索引结构,默认建立的索引就是这种类型的索引。B*Tree索引在检索高基数数据列(高基数数据列是指该列有很多不同的值)时提供了最好的性能。当取出的行数占总行数比例较小时B-Tree索引比全表检索提供了更有效的方法。但当检查的范围超过表的10%时就不能提高取回数据的性能。B-Tree 索引是基于二叉树的,由分支块(branch block)和叶块(leaf block)组成。在树结构中,位于最底层底块被称为叶块,包含每个被索引列的值和行所对应的rowid。在叶节点的上面是分支块,用来导航结构,包含了索引列(关键字)范围和另一索引块的地址。

华为面试题(附答案)Oracle

一、技术问题部分(数据库部分) 1、表空间的管理方式有哪几种? 数据字典管理方式 本地文件管理方式 2、谈谈你对索引的理解? 索引是若干数据行的关键字的列表,查询数据时,通过索引中的关键字可以快速定位到要访问的记录所在的数据块,从而大大减少读取数据块的I/O次数,因此可以显著提高性能。 3、说说索引的组成? 索引列、rowid 4、分区表用过么?谈谈分区表的应用? 分区表在对表的DML的并行处理上有极大得优势,而且可以一部分设为只读,用在销售记录,医院处方等地方!! 5、你对分区表的理解?怎样截断分区表一个分区的记录? 一个分区表有一个或多个分区,每个分区通过使用范围分区、散列分区、或组合分区分区的行 分区表中的每一个分区为一个段,可各自位于不同的表空间中 对于同时能够使用几个进程进行查询或操作的大型表分区非常有用 alter table table_name truncate partition partition_name; 6、物理文件有哪几种?控制文件包含了什么信息? 1)数据文件2)控制文件3)日志文件 包含维护和验证有选举权据库完整性的必要信息、例如,控制文件用于识别数据文件和重做日志文件,一个有选举权据库至少需要一个控制文件 7、表空间用完了如何增加? 三种种扩展方式: 1 增加数据文件alter tablespace name add datafile …路径? size 4M; 2 扩展数据文件大小alter database datafile …路径? resize 4M; 3 把数据文件设为自动增长 alter database datafile …路径? autoextend on next 1M maxsize 20M; 8、SGA包含几部分? Shared pool(共享池),DataBase Buffer Cache(数据缓冲区) Redo Log Buffer(重做日志缓冲区), Large Pool,大池,JAVA池。 9、DECODE函数的用法? DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。初看一下,DECODE 只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能。还可以转化表结构! 10、DELETE和TRUNCATE的区别? 答:1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有

几个Oracle的笔试题

Oracle笔试试题 1. SQL必备 <选择题每空 1 分共 14题> 1. 如果在where子句中有两个条件要同时满足,应该用以下哪个逻辑符来连接 ( ) A.OR B.NOT C.AND D.NONE 2. 外连接的条件可以放在以下的那一个子句中( ) A.FROM B.WEHRE C.SELECT D.HAVING E.GROUP BY F.ORDER BY 3. 在从两个表中查询数据时,连接条件要放在哪个子句中( ) A.FROM B.WHERE C.SELECT D.HAVING E.GROUP BY 4. 用以下哪个子句来限制分组统计结果信息的显示( ) A.FROM B.WEHRE C.SELECT D.HAVING E.GROUP BY F.ORDER BY 5. 以下需求中哪个需要用分组函数来实现( ) A.把ORDER表中的定单时间显示成 'DD MON YYYY' 格式 B.把字符串 'JANUARY 28, 2000' 转换成日期格式 C.显示PRODUCT 表中的COST 列值总量 D.把PRODUCT表中的DESCRIPTION列用小写形式显示 6. 以下那些命令可以暗含提交操作( )

A.GRANT B.UPDATE C.SELECT D.ROLLBACK 7.RDBMS是下列哪一项的缩写( ) A. Relational DataBase Management System(关系数据库管理系统) B. Relational DataBase Migration System(关系数据库移植系统) C. Relational Data Migration System(关系数据移植系统) D. Relational DataBase Manage System(关系数据库管理系统) 8.INSERT 是( ) A. DML语句 B. DDL语句 C. DCL语句 D. DTL语句 9.SELECT CHR(66) FROM DUAL的结果是( ) A. Z B. S C. B D. 都不是 10.函数返回一个值除以另一个值后的余数( ) A. MOD B. ABS C. CEIL D. 以上都不是 11. 什么锁用于锁定表,仅允许其他用户查询表中的行,行不允许插入,更新, 或删除行( ) A. 共享 B. 排他 C. 共享更新 D. 以上都不是 12.什么是oracle提供的一个对象,可以生成唯一的连续的整数( ) A. 同义词 B. 序列 C. 视图 D. 没有 13. 那种类型的约束可以自动创建索引( ) A.CHECK B.UNIQUE

Oracle精选面试题(附答案及分析)

Oracle精选面试题 1.显示10 号部门的所有经理('MANAGER')和20 号部门的所有职员('CLERK')的详细信息 答案: Select * from emp where deptno=10 and job=’MANAGER’ or deptno=20 and job=’clerk’; select * from emp where deptno = 10 and job = 'MANAGER' or deptno = 20 and job ='CLERK'; 2.显示姓名中没有'L'字的员工的详细信息或含有'SM'字的员工信息 答案: Select * from emp where ename note like ‘%L%’ or ename like ‘%SM%’; select * from emp where ename not like '%L%' or ename like '%SM%'; 3.显示各个部门经理('MANAGER')的工资 答案: select deptno,emname, salary from emp_wqq where job='MANAGER'; 4.显示佣金(COMM)收入比工资(SAL)高的员工的详细信息 答案: select * from emp where comm > sal; 5.把hiredate 列看做是员工的生日,求本月过生日的员工 答案: select * from emp where to_char(hiredate, 'mm') = to_char(sysdate , 'mm'); 6.把hiredate 列看做是员工的生日,求下月过生日的员工 答案: select * from emp where to_char(hiredate, 'mm') = to_char(add_months(sysdate,1) , 'mm'); 7.求1982 年入职的员工 答案: select * from emp where to_char(hiredate,'yyyy') = '1982'; 8.求1981 年下半年入职的员工 答案: select * from emp where hiredate between to_date('1981-7-1','yyyy-mm-dd') and to_date('1982-1-1','yyyy-mm-dd') - 1; 9.求1981 年各个月入职的的员工个数 答案: select count(*), to_char(trunc(hiredate,'month'),'yyyy-mm')

Oracle面试题库_3

Oracle面试题库 END LOOP;7. 当在一个PLSQL块中通过查询得到一个值,但是没有任何值返回时,会产生异常吗?如果产生,是什么异常?A 不会有异常,只不过没有结果而已B 有异常,异常为No_data_foundC 有异常,异常为Value_erroD 编译都不通过8. 在PLSQL块中处理异常的语句是 A EXCEPTIONIF EXCEPTION_NAME THENDBMS_OUTPUT.PUT_LINE();END;B EXCEPTIONWHEN EXCEPTION_NAME THENDBMS_OUTPUT.PUT_LINE();END EXCEPTION ;C WHEN EXCEPTION_NAME THENDBMS_OUTPUT.PUT_LINE();D BEGINNULL;EXCEPTIONWHEN EXCEPTION_NAME THENDBMS_OUTPUT.PUT_LINE();END ;9. 当用户在PLSQL块中,像抛出自定义异常或者是系统异常时,所使用的关键字是 A THROWB RAISEC RAISE_APPLICATION_ERRORD EXCEPTION10. 在自定义异常中,用户可用的错误号范围在A 20000 ~ 29999B -20000 ~ -20999C 1~65535D 没有限制11. 阅读代码DECLAREBEGINDBMS_OUTPUT.PUT_LINE(‘外不快’);DECLAREMYEXCE EXCEPTION;BEGINRAISE MYEXCE;END;EXCEPTIONWHEN MYEXCE THENDBMS_OUTPUT.PUT_LINE(‘异常捕获’);END;出现的结果是

oracle常见面试题及答案

需求: 写一个邮件系统, 采用oracle+jsp+servlet来完成. 1.创建一个表空间。 2.创建一个用户,将用户赋到表空间上. 3.给用户赋权限. 4.以新建用户登录,创建一个程序包. 5.在表空间上建表,两个表 用户表 Id int Uname varchar Upass varchar 邮件表 eId int Title varchar Contents varchar Uid int 外键 附件表 Id int Filepath varchar Eid int 外键 6.作增,删,改,查的操作,全部封装到存储过程中 7.写一个java程序来调用. 1.解释FUNCTION,PROCEDURE和PACKAGE区别 答:function 和procedure是PL/SQL代码的集合,通常为了完成一个任务。procedure 不需要返回任何值, 而function将返回一个值. 在另一方面,Package是为了完成一个商业功能的一组function和procedure的集合。

2.取某个序列的当前值的PL/SQL语句怎么写? 答:SELECT 序列名.CURRVAL FROM DUAL; Create sequence 名字 start with x increment by y maxvalue z nocycle 3.说明ORACLE数据库实例与ORACLE用户的关系? 答:实例可以包含多个用户,一个用户只能在一个实例下 4.创建用户时,需要赋予新用户什么权限才能使它连上数据库? 答:grant CONNECT [on 表名] to 用户名 5.比较truncate和delete命令? 答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL(data defining language数据定义语言),它移动HWK,不需要rollback segment(处理事务回滚操作)而Delete是DML(data manufacturing language数据操作语言)操作,需要rollback segment(处理事务回滚操作)且花费较长时间 6.给出数据的相关约束类型? 答:主键约束,外键约束,非空约束,唯一约束,检查约束。 7.说明索引的类型与作用? 答:索引类型上分为聚集索引,非聚集索引. 其作用是加快查询速度。 8.获取某个字符字段的最后3个字符的函数是什么? 答:select substr (字段,(length(字段)-3)) from 表 9.取当前系统时间点日期(不包括年月)的SQL写法是怎样的? 答:Select substr (to_char(sysdate,’YYYYMMDDh24hh:MM:SS’),5) from dual; to_char(sysdate,’YYYYMMDDh24hh:MM:SS’) 10.返回大于等于N的最小整数值? 答:select ceil(1.5) from dual; floor(1.5) 11.将根据字符查询转换后结果,规则为:’A’转换为’男’,’B’转换为’女’,其他字符转换为’未知’,请用一个SQL语句写出。 答:select decode(字符,’A’,’男’,’B’,’女’,’未知’) from dual; 12.如何搜索出前N条记录? 答:select * from 表 where Rownum <= N;

oracle面试题集锦

本文是Oracle技术人员求职面试题集锦,答案仅供参考…… 1. 解释冷备份和热备份的不同点以及各自的优点 解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘) 2. 你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢? 解答:重建控制文件,用带backup control file 子句的recover 命令恢复 数据库。 3. 如何转换init.ora到spfile? 解答:使用create spfile from pfile 命令. 4. 解释data block , extent 和segment的区别(这里建议用英文术语) 解答:data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent . 一个数据库对象 拥有的所有extents被称为该对象的segment. 5. 给出两个检查表结构的方法 解答:1。DESCRIBE命令 2. DBMS_METADATA.GET_DDL 包 6. 怎样查看数据库引擎的报错 解答:alert log. 7. 比较truncate和delete 命令 解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要rollback segment .而Delete是DML操作, 需要rollback segment 且花费较长时间. 8. 使用索引的理由 解答:快速访问表中的data block 9. 给出在STAR SCHEMA中的两种表及它们分别含有的数据 解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而dimension tables 存放对fact table 某些属性描述的信息 10. FACT Table上需要建立何种索引? 解答:位图索引(bitmap index) 11. 给出两种相关约束? 解答:主键和外键 12. 如何在不影响子表的前提下,重建一个母表 解答:子表的外键强制实效,重建母表,激活外键 13. 解释归档和非归档模式之间的不同和它们各自的优缺点 解答:归档模式是指你可以备份所有的数据库transactions并恢复到任意一个时间点。非归档模式则相反,不能恢复到任意一个时间点。但是非归档模式可以带来数据库性能上的少许提高 . 14. 如何建立一个备份控制文件? 解答:Alter database backup control file to trace. 15. 给出数据库正常启动所经历的几种状态? 解答:

oracle面试题70问及答案

1. 解释冷备份和热备份的不同点以及各自的优点 解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘) 2. 你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢? 解答:重建控制文件,用带backup control file 子句的recover 命令恢复数据库。 3. 如何转换init.ora到spfile? 解答:使用create spfile from pfile 命令 .4. 解释data block , extent 和segment的区别(这里建议用英文术语) 解答:data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent . 一个数据库对象拥有的所有extents被称为该对象的segment. 5. 给出两个检查表结构的方法 解答:1、DESCRIBE命令 2、DBMS_METADA TA.GET_DDL 包 6. 怎样查看数据库引擎的报错 解答:alert log. 7. 比较truncate和delete 命令 解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要rollback segment .而Delete是DML操作, 需要rollback segment 且花费较长时间. 8. 使用索引的理由 解答:快速访问表中的data block 9. 给出在STAR SCHEMA中的两种表及它们分别含有的数据 解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而dimension tables 存放对fact table 某些属性描述的 信息 10. FACT Table上需要建立何种索引? 解答:位图索引(bitmap index) 11. 给出两种相关约束? 解答:主键和外键 12. 如何在不影响子表的前提下,重建一个母表 解答:子表的外键强制失效,重建母表,激活外键 13. 解释归档和非归档模式之间的不同和它们各自的优缺点 解答:归档模式是指你可以备份所有的数据库transactions并恢复到任意一个时间点。非归档模式则相反,不能恢复到任意一个时间点。 但是非归档模式可以带来数据库性能上的少许提高 14. 如何建立一个备份控制文件? 解答:Alter database backup control file to trace. 15. 给出数据库正常启动所经历的几种状态? 解答: STARTUP NOMOUNT –数据库实例启动 STARTUP MOUNT - 数据库装载

Oracle面试题及答案整理

Oracle面试题及答案整理

Oracle面试题及答案整理 1、表:table1(FId,Fclass,Fscore),用最高效最简单的SQL列出各班成绩最高的列表,显示班级,成绩两个字段。 select fclass,max(fscore) from table1 group by fclass,fid 2、有一个表table1有两个字段FID,Fno,字都非空,写一个SQL语句列出该表中一个FID对应多个不同的Fno的纪录。 类如: 101a1001 101a1001 102a1002 102a1003 103a1004 104a1005 104a1006 105a1007 105a1007 105a1007 结果: 102a1002

102a1003 104a1005 104a1006 select t2.* from table1 t1, table1 t2 where t1.fid = t2.fid and t1.fno <> t2.fno; 3、有员工表empinfo ( Fempno varchar2(10) not null pk, Fempname varchar2(20) not null, Fage number not null, Fsalary number not null ); 假如数据量很大约1000万条;写一个你认为最高效的SQL,用一个SQL计算以下四种人: fsalary>9999 and fage > 35 fsalary>9999 and fage < 35 fsalary <9999 and fage > 35 fsalary <9999 and fage < 35 每种员工的数量; select sum(case when fsalary > 9999 and fage > 35 then 1 else 0end) as "fsalary>9999_fage>35",

Oracle数据库DBA面试题及答案_经典

1.OracleDBA面试题之一解释冷备份和热备份的不同点以及各自的优点 解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。 冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘) 2. 你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢? 解答:重建控制文件,用带backup control file 子句的recover 命令恢复数据库。 3. 如何转换init.ora到spfile? 解答:使用create spfile from pfile 命令 4. OracleDBA面试题:解释data block , extent 和 segment的区别(这里建议用英文术语) 解答:data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent . 一个数据库对象拥有的所有extents 被称为该对象的segment. 5. 给出两个检查表结构的方法 解答:1、DESCRIBE命令 2、DBMS_METADATA.GET_DDL 包 6. 怎样查看数据库引擎的报错 解答:alert log. 7. 比较truncate和delete 命令 解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要 rollback segment .而Delete是DML操作需要rollback segment 且花费较长时间. 8. 使用索引的理由 解答:快速访问表中的data block 9. 给出在STAR SCHEMA中的两种表及它们分别含有的数据 解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而dimension tables 存放对fact table 某些属性描述的信息

Oracle+面试及答案-经典

一、基础概念 1.列举几种表连接方式 Answer:等连接(内连接)、非等连接、自连接、外连接(左、右、全) Or hash join/merge join/nest loop(cluster join)/index join ??ORACLE 8i,9i 表连接方法。 一般的相等连接: select * from a, b where a.id = b.id; 这个就属于内连接。 对于外连接: Oracle中可以使用“(+) ”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN LEFT OUTER JOIN:左外关联 SELECT https://www.wendangku.net/doc/7517323097.html,st_name, e.department_id, d.department_name FROM employees e LEFT OUTER JOIN departments d ON (e.department_id = d.department_id); 等价于 SELECT https://www.wendangku.net/doc/7517323097.html,st_name, e.department_id, d.department_name FROM employees e, departments d WHERE e.department_id=d.department_id(+) 结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id 的员工记录。 RIGHT OUTER JOIN:右外关联 SELECT https://www.wendangku.net/doc/7517323097.html,st_name, e.department_id, d.department_name FROM employees e RIGHT OUTER JOIN departments d ON (e.department_id = d.department_id); 等价于 SELECT https://www.wendangku.net/doc/7517323097.html,st_name, e.department_id, d.department_name FROM employees e, departments d WHERE e.department_id(+)=d.department_id 结果为:所有员工及对应部门的记录,包括没有任何员工的部门记录。 FULL OUTER JOIN:全外关联 SELECT https://www.wendangku.net/doc/7517323097.html,st_name, e.department_id, d.department_name FROM employees e FULL OUTER JOIN departments d ON (e.department_id = d.department_id);

Oracle面试问题-技术篇

Oracle 面试问题-技术篇 这也许是你一直期待的文章,在关注这部分技术问题的同时,请务必阅读有关面试中有关个人的问题和解答。这里的回答并不是十分全面,这些问题可以通过多个角度来进行解释,也许你不必在面试过程中给出完全详尽的答案,只需要通过你的解答使面试考官了解你对ORACLE?念的熟悉程度。 1. 解释冷备份和热备份的不同点以及各自的优点 解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下, 数据库性能会比归档模式稍好。(因为不必将archive log 写入硬盘) 2. 你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢? 解答:重建控制文件,用带backup control file 子句的recover 命令恢复数据库。 3. 如何转换init.ora 到spfile? 解答:使用create spfile from pfile 命令. 4. 解释data block , extent 和segment 的区别(这里建议用英文术语) 解答:data block 是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block 就组成了extent . 一个数据库对象拥有的所有extents 被称为该对象的segment. 5. 给出两个检查表结构的方法

解答:「DESCRIBE命令 2.DBMS_METADATA.GET_EtoL 6. 怎样查看数据库引擎的报错 解答:alert log.

Oracle面试题集锦

Oracle 面试题集锦 一、经典面试题 1.OracleDBA面试题之一解释冷备份和热备份的不同点以及各自的优点 解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。 冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘) 2.你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢? 解答:重建控制文件,用带backup control file 子句的recover 命令恢复数据库。 3.如何转换init.ora到spfile? 解答:使用create spfile from pfile 命令 4.解释data block , extent 和 segment的区别(这里建议用英文术语) 解答:data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent . 一个数据库对象拥有的所有extents被称为该对象的segment. 5.给出两个检查表结构的方法 解答:1、DESCRIBE命令 DBMS_METADATA.GET_DDL 包 6.怎样查看数据库引擎的报错 解答:alert log. 7.比较truncate和delete 命令 解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要 rollback segment .而Delete是DML操作需要rollback segment 且花费较长时间. 8.使用索引的理由 解答:快速访问表中的data block 9.给出在STAR SCHEMA中的两种表及它们分别含有的数据

Oracle-笔试题目带标准答案

1.( )程序包用于读写操作系统文本文件。(选一项) A、Dbms_output B、Dbms_lob C、Dbms_random D、Utl_file 2.( )触发器允许触发操作的语句访问行的列值。(选一项) A、行级 B、语句级 C、模式 D、数据库级 3.( )是oracle在启动期间用来标识物理文件和数据文件的二进制文件。(选一项) A、控制文件 B、参数文件 C、数据文件 D、可执行文件 4.CREATE TABLE 语句用来创建(选一项) A、表 B、视图 C、用户 D、函数 5.imp命令的哪个参数用于确定是否要倒入整个导出文件。(选一项) A、constranints B、tables C、full D、file 6.ORACLE表达式NVL(phone,'0000-0000')的含义是(选一项) A、当phone为字符串0000-0000时显示空值 B、当phone为空值时显示0000-0000 C、判断phone和字符串0000-0000是否相等 D、将phone的全部内容替换为0000-0000 7.ORACLE交集运算符是(选一项) A、intersect B、union C、set D、minus 8.ORACLE使用哪个系统参数设置日期的格式(选一项) A、nls_language

B、nls_date C、nls_time_zone D、nls_date_format 9.Oracle数据库中,通过()访问能够以最快的方式访问表中的一行(选一项) A、主键 B、Rowid C、唯一索引 D、整表扫描 10.Oracle数据库中,下面()可以作为有效的列名。(选一项) A、Column B、123_NUM C、NUM_#123 D、#NUM123 11.Oracle数据库中,以下()命令可以删除整个表中的数据,并且无法回滚(选一项) A、drop B、delete C、truncate D、cascade 12.Oracle中, ()函数将char或varchar数据类型转换为date数据类型。(选一项) A、date B、to_date C、todate D、ctodate 13.ORACLE中,执行语句:SELECTaddress1||','||address2||','||address2 "Address" FROMemploy;将会返回()列(选一项) A、0 B、1 C、2 D、3 14.Oralce数据库中,以下()函数可以针对任意数据类型进行操作。(选一项) A、TO_CHAR B、LOWER C、MAX D、CEIL 15.partition by list(msn_id)子句的含义是(选一项) A、按msn_id列进行范围分区 B、按msn_id列进行列表分区

oracle企业面试题集锦

oracle企业面试题集锦 宏观上: 1.最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在 windows 平台上,由于 windows 平台的稳定性和安全性影响了 sql server的稳定性和安全性 2.oracle使用的脚本语言为 PL-SQL ,而sql server使用的脚本为 T-SQL 微观上:从数据类型,数据库的结构等等回答 2.如何使用Oracle的游标 1.oracle中的游标分为显示游标和隐式游标 2.显示游标是用cursor is命令定义的游标,它可以对查询语句(select)返回的多条记录进行处理;隐式游标是在执行插入 (insert)、删除(delete)、修改(update)和返回单条记录的查询(select)语句时由 PL/SQL 自动定义的。 3.显式游标的操作:打开游标、操作游标、关闭游标;PL/SQL 隐式地打开SQL游标,并在它内部处理SQL语句,然后关闭它 3.Oracle 中 function 和 procedure 的区别 1.可以理解函数是存储过程的一种 2.函数可以没有参数,但是一定需要一个返回值,存储过程可以没有参数,不需要返回值 3.两者都可以通过out参数返回值,如果需要返回多个参数则建议使

用存储过程 4.在sql数据操纵语句中只能调用函数而不能调用存储过程 4.Oracle的导入导出有几种方式,有何区别 1.使用 oracle 工具 exp/imp 2.使用plsql相关工具 方法1.导入/导出的是二进制的数据,2.plsql导入/导出的是 sql语句的文本文件 5.Oracle中有哪几种文件 数据文件(一般后缀为.dbf或者.ora),日志文件(后缀名.log),控制文件(后缀名为.ctl) 6.怎样优化Oracle数据库,有几种方式 个人理解,数据库性能最关键的因素在于IO,因为操作内存是 快速的,但是读写磁盘是速度很慢的,优化数据库最关键的问题在于减少磁盘的IO,就个人理解应该分为物理的和逻辑的优化,物理的是指oracle产品本身的一些优化,逻辑优化是指应用程序级别的优化物理优化的一些原则: 1.Oracle的运行环境(网络,硬件等) 2.使用合适的优化器 3.合理配置oracle实例参数 4.建立合适的索引(减少IO) 5.将索引数据和表数据分开在不同的表空间上(降低 10冲突) 6.建立表分区,将数据分别存储在不同的分区上(以空间换取时间,

Oracle数据库的面试题目及答案

Oracle数据库的面试题目及答案 基础题目: 1. 比较truncate和命令 解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要 rollback segment . 而Delete是DML操作, 需要rollback segment 且花费较长时间. 【相同点 truncate和不带where子句的, 以及drop都会删除表内的数据 不同点: 1. truncate和只删除数据不删除表的结构(定义) drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,

但是变为invalid状态. 2.语句是dml,这个操作会放到rollback segement中,事务提交 之后才生效;如果有相应的trigger,执行的时候将被触发. truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger. 3.语句不影响表所占用的extent, 高水线(high watermark)保持 原位置不动 显然drop语句将表所占用的空间全部释放 truncate 语句缺省情况下见空间释放到 minextents个 extent, 除非使用reuse storage; truncate会将高水线复位(回到最开始). 4.速度,一般来说: drop>; truncate >; 5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及

使用上,想删除部分数据行用,注意带上where子句. 回滚段要足够大. 想删除表,当然用drop 想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用. 如果是表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据 2.Oracle中,需要在查询语句中把空值(NULL)输出为0,如何处理? 答案:nvl(字段,0). nvl( ) 函数 从两个表达式返回一个非 null 值。 语法

华为面试题(附答案)Oracle-DBA、JAVA架构师必看

DBA数据库管理员JAVA程序员架构师必看 一、技术问题部分(数据库部分) 1、表空间的管理方式有哪几种? 数据字典管理方式 本地文件管理方式 2、谈谈你对索引的理解? 索引是若干数据行的关键字的列表,查询数据时,通过索引中的关键字可以快速定位到要访问的记录所在的数据块,从而大大减少读取数据块的I/O次数,因此可以显著提高性能。 3、说说索引的组成? 索引列、rowid 4、分区表用过么?谈谈分区表的应用? 分区表在对表的DML的并行处理上有极大得优势,而且可以一部分设为只读,用在销售记录,医院处方等地方!! 5、你对分区表的理解?怎样截断分区表一个分区的记录? 一个分区表有一个或多个分区,每个分区通过使用范围分区、散列分区、或组合分区分区的行 分区表中的每一个分区为一个段,可各自位于不同的表空间中 对于同时能够使用几个进程进行查询或操作的大型表分区非常有用 alter table table_name truncate partition partition_name; 6、物理文件有哪几种?控制文件包含了什么信息? 1)数据文件2)控制文件3)日志文件 包含维护和验证有选举权据库完整性的必要信息、例如,控制文件用于识别数据文件和重做日志文件,一个有选举权据库至少需要一个控制文件 7、表空间用完了如何增加? 三种种扩展方式: 1 增加数据文件alter tablespace name add datafile …路径? size 4M; 2 扩展数据文件大小alter database datafile …路径? resize 4M; 3 把数据文件设为自动增长 alter database datafile …路径? autoextend on next 1M max size 20M; 8、SGA包含几部分? Shared pool(共享池),DataBase Buffer Cache(数据缓冲区) Redo Log Buffer(重做日志缓冲区), Large Pool,大池,JAVA池。 9、DECODE函数的用法? DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。初看一下,DECODE 只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能。还可以转化表结构! 10、DELETE和TRUNCATE的区别?

Oracle笔试题及答案

一、选择题(每题1分) 1.Oracle发出下列select语句: SQL> select e.empno, e.ename, d.loc 2 from emp e, dept d 3 where e.deptno = d.deptno 4 and substr(e.ename, 1, 1) = ‘S’; 下列哪个语句是Oracle数据库中可用的ANSI兼容等价语句? A.select empno, ename, loc from emp join dept on emp.deptno = dept.deptno where substr(emp.ename, 1, 1) = ‘S’; B.select empno, ename, loc from emp, dept on emp.deptno = dept.deptno where substr(emp.ename, 1, 1) = ‘S’; C.select empno, ename, loc from emp join dept where emp.deptno = dept.deptno and substr(emp.ename, 1, 1) = ‘S’; D.select empno, ename, loc from emp left join dept on emp.deptno = dept.deptno and substr(emp.ename, 1, 1) = ‘S’; 2.你要对操纵Oracle数据库中的数据。下列哪个选项表示Oracle中select语句的功能, 并且不需要使用子查询? A.可以用select语句改变Oracle中的数据 B.可以用select语句删除Oracle 中的数据 C.可以用select语句和另一个表的内容生成一个表 D.可以用select语句对表截断 3.Oracle数据库中发出一个查询。下列哪个选项不能查询对用户定义静态表达式执行数学 运算时的查询组件? A.列子句 B.表子句 C.DUAL表 D.where子句 4.你要操纵Oracle数据,下列哪个不是SQL命令? A.select * from dual; B.set define C.update emp set ename = 6543 where ename = ‘SMITHERS’; D.create table employees(empid varchar2(10) primary key); 5.你要在Oracle中定义SQL查询。下列哪个数据库对象不能直接从select语句中引用?A.表 B.序列 C.索引 D.视图 6.你要根据PRODUCT_NAME列从PROFITS表查询中过滤返回的数据。下列哪个子句包含相 应过滤条件的引用? A.select B.from C.where D.having 7.下列代码显示了PROFITS表输出的局部: PRODUCT_NAME PRODUCT_TYPE QTR_END_DATE PROFIT ------------ ------------ ------------ ------------- BARNEY DOLL TOY 31-MAR-2001 6575430.30 GAS GRILL APP 31-MAR-2001 1234023.88

相关文档