oracle数据库面试题目汇总Word格式文档下载.docx
《oracle数据库面试题目汇总Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《oracle数据库面试题目汇总Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
![oracle数据库面试题目汇总Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-12/30/0209d838-e67b-439a-a2b1-60c8eea25e07/0209d838-e67b-439a-a2b1-60c8eea25e071.gif)
*可恢复性:
一旦系统故障,数据库会自动地完全恢复未完成的事务。
3、oracle中查询系统时间
selectsysdatefromdual
4、触发器的作用,什么时候用触发器,创建触发器的步骤,触发器里是否可以有commit,为什么?
触发器是可以由事件来启动运行的,存在于数据库服务器中的一个过程。
他的作用:
可以实现一般的约束无法完成的复杂约束,从而实现更为复杂的完整性要求。
使用触发器并不存在严格的限定,只要用户想在无人工参与的情况下完成一般的定义约束不可以完成的约束,来保证数据库完整性,那么就可以使用触发器。
由于触发器主要是用来保证数据库的完整性的,所以要创建一个触发器,首先要明确该触发器应该属于那一种(DML,INSTEADOF,SYSTEM)因为他们各有个的用途;
其次就是要确定触发器被触发以后所设计到的数据。
出发器中不可以使用COMMIT。
5.数字函数
abs()绝对值exp(value)e的value次幂ceil()大于等于该值的最小整数floor()小于等于该值的最大整数trunc(value,precision)保留precision个小数截取valueround(value,precision)保留precision个小数对value进行四舍五入sign()根据值为正负零返回1,-1,0mod()取模操作power(value,exponent)value的exponent次幂sqrt()求平方根
1.初级
4、关系数据库系统与文件数据库系统的区别在那里?
关系数据库系统一般适用那些方面?
关系数据库系统文件系统的区别在于:
首先,关系性数据库的整体数据是结构化的,采用关系数据模型来描述,这是它与文件系统的根本区别。
(数据模型包括:
数据结构,数据操作以及完整性约束条件)
其次,关系数据库系统的共享性高,冗余低可以面向整个系统,而文件系统则具有应用范围的局限性,不易扩展。
第三,关系数据库系统采用两级映射机制保证了数据的高独立性,从而使得程序的编写和数据都存在很高的独立性。
这方面是文件系统无法达到的,它只能针对于某一个具体的应用。
(两级映射:
保证逻辑独立性的外模式/模式映射和保证物理独立性的内模式/模式映射。
外模式:
用户模式,是数据库用户的局部数据的逻辑结构特征的描述。
模式:
数据库全体数据的逻辑结构特征的描述。
内模式:
也就是数据最终的物理存储结构的描述。
)
第四,就是关系性数据库系统由统一的DBMS进行管理,从而为数据提供了如安全性保护,并发控制,完整性检查和数据库恢复服务。
5、触发器的概念,存储过程的概念.
触发器:
是存储在数据库中的过程,当表被修改(增、删、改)时它隐式地被激发。
存储过程:
是数据库语言SQL的集合,同样也存储在数据库中,但是他是由其他应用程序来启动运行或者也可以直接运行。
6、基本SQL语句有哪些.
select、insert、update、delete、create、drop、truncate
1.中级
8、什么是事务一致性?
选择熟悉的数据库实现一个事务处理,如信用卡提款.
事务的一致性:
是事务原子性的体现,事务所对应的数据库操作要么成功要么失败没有第三种情况。
事务不管是提交成功与否都不能影响数据库数据的一致性状态。
事务:
用户定义的一个数据库操作序列,这些操作要么全部成功完成要么全部不做,是一个不可分割的整体。
定义事务的SQL语句有:
BEGINTRANSACTION,COMMIT,ROLLBACK。
事务的原子性:
就是事务所包含的数据库操作要么都做,要么都不做.
事务的隔离性:
事务对数据的操作不能够受到其他事务的影响。
事务的持续性:
也就是说事务对数据的影响是永久的。
对'
信用卡提款'
这一事务而言就是要保证'
提取到现金'
和'
卡帐号余额'
的修改要同时成功或失败.
BEGINTRANSACTION
读取A的帐户余额BALANCE;
BALANCE=BALANCE-AMOUNT转帐金额;
IF(BALANCE<
0)THEN
ROLLBACK;
ELSE
BEGIN
将A的新余额写回;
读取B的帐户余额BALANCEB;
BALANCEB=BALANCEB+AMOUNT转帐金额;
将B的新余额写回;
COMMIT;
ENDIF;
END;
9、实际编写和调试存储过程或触发器.
10、实现索引的方式?
索引的原理?
索引的代价?
索引的类型?
实现索引的方式有两种:
针对一张表的某些字段创建具体的索引,如对oracle:
createindex索引名称on表名(字段名);
在创建表时为字段建立主键约束或者唯一约束,系统将自动为其建立索引。
索引的原理:
根据建立索引的字段建立索引表,存放字段值以及对应记录的物理地址,从而在搜索的时候根据字段值搜索索引表的到物理地址直接访问记录。
引入索引虽然提高了查询速度,但本身占用一定的系统存储容量和系统处理时间,需要根据实际情况进行具体的分析.
索引的类型有:
B树索引,位图索引,函数索引等。
11、view的概念?
何时应用?
view是对表级数据的多角度的透视,适用于对查询安全性、灵活性有一定要求的环境
12、sql语句例外处理?
举例说明?
当sql语句在执行过程中出现意外时,如查询时,未查询到结果;
更改时无记录等情况的应采取的措施.
以oracle为例:
测试其对exception的理解.如
select字段into变量fromtable;
若查询出多条记录,应增加exception例外处理.
Oracle处理异常有三种:
1.预定义的例外处理,EXCEPTIONWHENexception_nameTHEN
2.EXCEPTION_INIT产生例外
首先要declare声明一个例外名;
然后将例外名和错误代码绑定pragmaexception_init(错误名,错误代码);
最后在EXCEPTION处when错误名then
3.用户自定义例外,不用EXCEPTION,当判断条件成熟时用raise_application_error(-20000~~~-20999,提示信息)。
13、判断下列论述是否正确。
(1)一个事务中的某条SQL命令提交时,其它SQL命令可以不提交。
(2)在一个关系表中,主键可唯一标识一行记录。
(3)一个关系表中的外键必定是另一表中的主键。
(4)回滚可以在事务失败时,回到操作事务前的数据状态。
(1)错误
(2)正确(3)正确(4)正确
14、以下哪些手段可保证数据库中数据的完整性和一致性:
(1)自定义数据类型
(2)触发器(3)主键和外键(4)事务
(1)
(2)(3)(4)(为什么有1)
15、使用存储过程访问数据库比直接用SQL语句访问有哪些优点?
存储过程是预编译过的,执行时勿须编译,执行速度更快;
存储过程封装了一批SQL语句,便于维护数据的完整性与一致性;
可以实现代码的复用。
1.高级
16、对于精通的数据库系统描述其体系结构,主要包括存储机制、回滚机制、运行机制等.
对oracle系统而言,描述sga的结构;
后台pmon,ckpt、lgwr,smon等进程的功能;
表空间的分配策略;
回滚段的结构
oracle的sga(系统全局区)包括的主要区有:
数据库缓存区,重做日志缓存区,共享池(数据字典缓存和库缓存),大池等。
数据库缓存区用来存放最近使用过的数据块主要和后台进程中的数据库写进程(DBWR)以及数据文件发生关系;
重做日志缓存区用于存放操作数据库数据所产生的重做日志信息,与之合作的有重做日志写进程(LGWR)和重做日志文件;
共享池主要缓存SQL/PLSQL,资源锁,控制信息等,其中的库缓存主要缓存被解析执行过的SQL/PLSQL库缓存可分为共享SQL和私有SQL两个区,共享SQL用于存放SQL语句的语法分析结果和执行计划,私有SQL则用来存放与具体SQL语句执行有关的绑定变量,会话参数等。
ORACLE实例的另外一个重要部分就是其后台进程,主要的后台进程有:
数据库写进程(DBWR),重做日志写进程(LGWR),系统监视器(SMON),进程监视器(PMON),检查点进程(CKPT)。
DBWR主要是对数据库缓存区中的脏冷数据进行写入数据文件操作;
LGWR主要是将对数据库数据操作所产生的重做日志信息写入到重做日志文件中;
SMON完成由于非正常关闭数据库的情况下重起数据库时对数据库的恢复;
PMON用来恢复失败的用户进程和服务进程,并释放其所占的系统资源;
CKPT可以表示数据库在此出处于完整状态。
逻辑存储结构:
数据块BLOCK,区EXTENT,段SEGMENT,表空间TABLESPACE
物理存储空间:
表空间,数据文件,控制文件,日志文件,数据字典
软件体系结构就是上边对SGA和后台进程的描述。
17、对于精通的数据库系统描述其数据一致性的保证机制,包括lock,事务一致性等.
在并发环境下,采用多种机制保持其数据的一致性,如oracle系统提供的事务级的一致性、行级锁、表级锁等等.
18、对精通的数据库系统描述其联机备份机制、恢复机制,考核其对日志的理解.
描述相关数据库的实时联机备份策略,如数据库系统在运行中通过何种方式保证其数据的实时备份,出现问题时,应采取何种办法从联机备份进行恢复.
对对oracle而言,其archiveonline备份方式应如何设置、修改什么参数、如何安排备份空间等等.
19、精通的数据库系统描述性能优化方法,包括优化的策略、参数、验证方法等.
20、Truncate;
与delete;
的区别?
(这道题可以衍生出很多的问题比如:
想快速的清除一个很大的表中的数据应该用设么操作?
答案是:
应该用truncate。
还有,在对两个相同纪录数的分别表使用了truncate,和deletecommit;
后对这两个表进行count(*)统计记录数操作,那个表速度会快些?
使用了truncate的会快些。
21、写一个‘游标’并使用它。
(这道题应该注意的是:
在使用游标后一定要记得关闭游标)。
Declare
Cursorcursor_nameis
Select*fromtablename;
Begin
Opencursor_name;
Loop
Fetchcursor_nameintobianliang;
Exitwhencursor_name%notfound;
Sql……..
Endloop;
Closecursor_name;
End;
22、在创建表的时候会设置
pctfree10
pctused40
而创建表的索引的时候却没有
这是为什么?
(这道题的主要思想是索引不能在pctused40上得到什么好处)
23、使用过的最大的表有多少行纪录?
(这道题不是看应试者的技术过不过关,而是考察应试者是否有大型数据库的管理操作经验)
不要对表的索引列进行函数操作,因为这样系统就不能使用索引,使查询变得很慢,但是在ora8i以后就已经开始支持函数的索引,弥补了这个不足。
24、ORACLE数据库启动与关闭的步骤
启动:
启动实例----加载数据库数据-----打开数据库
关闭:
关闭数据库----卸载数据库数据----关闭实例
25、Delete与truncate的区别
delete一般用于删除少量记录的操作,而且它是要使用回滚段并且要进行显示的提交事务。
而truncate则使用于大量删除数据,而且隐式提交事务,其速度要比使用delete快的多。
26、DDL和DML分别代表什么?
?
DDL表示数据定义语言,在ORACLE中主要包括CREATE,ALTER,DROP
DML表示数据操作语言,主要的DML有SELECT,INSERT,UPDATE,DELETE
28、Javascript中动态效果时调用的函数。
29、数据库中有若干条相同的记录,删除到只剩下一条记录。
如何做,请用SQL语句通过ROW_ID来写出执行过程。
Deletetable_namewhereziduan=’’androwed<
(selectmax(rowed)fromtable_namewhereziduan=’’);
30、oracle数据库表存放到磁盘什么地方(什么物理空间上——大概意思)?
Oracle数据库表存放在数据文件上。
31、Oracle使用什么语句给用户分配权限?
GRANTTO语句
32、你在项目现场,用户要求你向正在运行的表中添加一个字段,你该怎么做?
第一种方法:
关闭数据库,然后使用受限模式打开,由sys/sysdba来进行
第二种方法:
不关闭数据库,将数据库置于静默状态在SYS/SYSDBA模式下用ALTERSYSTEMQUISCERESTRICTED,这种状态下只有SYS/SYSDBA才可以对数据库进行操作,修改完毕之后再退出静默状态ALTERSYSTEMUNQUISCE
在这里复习到了数据库的两种特殊状态:
静默状态(QUISCE)和挂起状态
静默状态就是只有特殊权限的SYS/SYSDBA才可以对数据库进行操作,使用ALTERSYSTEMQUISCERESTRICTED以后系统将等候活动着的会话主动结束,同时阻止建立新的会话,系统挂起所有的SQL语句,等恢复以后再重新激活会话执行挂起的SQL。
挂起状态就是系统将数据库所有对物理文件(数据文件,控制文件,日志文件)的I/O操作都暂停,但是并不禁止非DBA用户对数据库进行操作。
这种状态主要用于进行数据库备份。
33、Oracle中回滚的概念?
回滚段有什么作用。
回滚就是在事务提交之前将数据库数据恢复到事务修改之前数据库数据状态。
回滚段就是为回滚提供依据,记录的是事务操作数据库之前的数据或者对应于以前操作的操作,这个内容要根据以前的操作而定。
比如说以前事务操作如果是UPDATE那么回滚段则存储UPDATE以前的数据,如果事务是DELETE操作那么存储的则是与之相对应的INSERT操作语句,相反如果事务操作是INSERT那么记录相应的则是DELETE操作了。
34、Oracle的8I和9I有什么区别
35、一张表有10万条记录,如何删除其中的任意20条记录?
请用SQL语句进行操作
36、客户端如何访问服务器端的oracle?
如果客户端无法访问服务器端的oralce,可能会是什么原因?
客户端通过网络或者进程方式以合法的用户身份来取得和服务器端ORACLE的连接。
如果客户端无法访问服务器端ORACLE可能出现的原因是:
用户无权访问;
服务器端数据库并没有打开(启动数据库的第三步没有完成);
如果服务器是在共享模式下的则有可能没有对应于该客户所使用的通信协议的调度进程Dnnn。
37、oracle中执行语句错误时去哪里查找错误信息?
Select*fromUSER_ERRORS
38、select语句需要提交吗?
insert和update语句呢?
39、在执行insert语句并提交后,这些提交的数据存储到什么地方?
被存储到数据文件中
40、oracle中有哪些类型的文件?
数据文件,控制文件,日志文件和数据字典
41、介绍一下oracle的体系结构?
逻辑体系结构:
块,区,段,表空间
物理体系结构:
表空间,三大文件
软件体系结构:
SGA,后台进程
42、谈谈对oracle的row_id是否理解?
请简述?
ORACLE的row_id是一个伪列,其个是为18个字节可将这18个字节用6363来划分,分别表示段编号,数据文件编号,数据块编号和记录编号。
Row_id表示的是一个记录的物理存储地址。
43、oracle中如何删除用户?
Oracle中使用DROPUSER来删除用户,如果使用DROPUSERCASCADE那么用户的对象也同时被删除掉。
为了达到删除用户的效果而又不影响对用户下的对象的使用可以使用alteruserusernameaccountlock将用户锁定。
44、客户端对服务器端的oralce操作的流程是什么?
专用模式下:
用户通过应用程序进程试图去得到一个与ORACLE数据库服务器的连接→客户端通过网络传递连接请求,ORACLE服务器则使用监听进程监听用户请求,并且来验证用户身份,通过验证则为用户分配一专用服务进程→用户提交SQL语句→专用服务进程则首先在SGA区的共享池中检查是否有与该SQL语句相似的已经被解析执行并且缓存的SQL语句,如果有则采用它的解析结果和执行计划执行SQL语句,如果没有则对SQL语句进行语法解析生成执行计划→通过解析则执行操作获取数据→将执行结果返回给客户。
共享模式下:
与专用模式不同在于当监听程序验证用户的合法性以后并不为它分配一个专用的服务进程,而是将该请求与响应的调度进程相联系起来,并将起放入到一个请求队列中,最终由响应的Dnnn来从调度队列中获取一个请求并为之分配一个空闲的服务进程,接下来有服务进程对该请求进行服务操作和专用方式下相同,处理完成之后由服务进程先将结果放入一个返回队列最后再由调度进程(Dnnn)将返回队列中的结果返回给对应的用户。
45、exits和in在ORALCE数据库中那个执行效率更高?
Exits执行效率比in高。
因为:
46、如何判断游标已经到最后一行?
Cursor_name%notfound
47、聚簇索引和普通索引在不同的SQL语句中哪个效率更高?
(笔试题,原题回忆不起来,主题就是聚簇索引和普通索引的区别)
概念类:
聚合函数?
Session的定义和用法?
Oracle的存储过程?
什么是构造函数?
48、简述ORACLE中SGA的组成部分。
系统全局区包括:
共享池、重做日志缓存区、数据高速缓存区,大池,JAVA池。
49、简述ORACLE的启动和关闭各有多少步骤?
启动实例、装载数据库数据、打开数据库。
关闭数据库、卸载数据库数据、关闭实例。
50、在Oracle表空间的分类和作用,如排序时数据将放在什么表空间?
作用是为了突破存储容量的限制,是一个逻辑概念。
排序数据放在临时表空间。
51、执行COMMIT命令时,数据库将会发生什么改变,ROLLBACK呢?
commit提交时首先是与事务对应的重做日志信息将被写入到数据库物理文件中的重做日志文件中,至于是否会真正将事务操作的内容反映到数据文件还好看DBWR是否启动了。
在完成数据库的插入,删除和修改操作时,只有当事务提交到数据库才算完成,有提交前只有操作数据库的本人才能看到,别人只有在最后提交完成才可以看到。
ROLLBACK回滚当前尚未提交的事务,使数据库恢复到事务操作前的状态。
52、用命令创建用户,并为用户授权。
Createuseruser_name
identifiedbypassword/
identifiedexternally/
identifiedbloballyas‘CN=user’
defaulttablespacetablespace_name
temporarytablespacetablespace_name;
grantrole/privilegetouser_name;
53、写一个存储过程,使employee(name,age,emp_no,salary)表中的salary值在0-1000之间的员工的工资上涨20%,(提示:
要求用到游标)
Cteateorreplaceprocedureemp_sal
V_nameemployee.name%type;
V_emp_noemployee.emp_no%type;
V_salaryemployee.salary%type;
Cursorcursor_salis
Selectname,emp_no,salaryfromemployeewheresalarybetween0and1000;
Opencursor_sal;
Fetchcursor_salintov_name,v_emp_no,v_salary;
Exitwhencursor_sal%notfound;
Updateemployeesetsalary=salary*1.2wherename=v_nameandemp_no=v_emp_no;
Closecursor_sal;
Commit;
54、ORACLE数据库都有哪些类型的文件?
数据文件,控制文件,日志文件,参数文件
55、用命令创建表空间、用户,并为用户授权、收回权限。
Createtablespacetabllespacename
Datafile‘f:
\orcl\user001.dbfsize20m
Defaultstorage(
Initial512k
Next512k
minextents2
pctincrease50%
maxExitnts2048)
minimumextent512k
logging
online
permanent
extentmanagementdictionary;
回收权限:
revokeprivilege