Oracle数据库简答题考试重点Word文档格式.docx
《Oracle数据库简答题考试重点Word文档格式.docx》由会员分享,可在线阅读,更多相关《Oracle数据库简答题考试重点Word文档格式.docx(15页珍藏版)》请在冰点文库上搜索。
数据库表空间的管理方式有两种:
字典管理方式和本地管理方式。
在字典管理方式下,表空间使用数据字典来管理存储空间的分配,当进行区的分配与回收时,Oracle将对数据字典中的相关基础表进行更新,同时会产生回退信息和重做信息。
在本地管理方式中,区的分配和管理信息都存储在表空间的数据文件中,而与数据字典无关。
10、表空间管理时应考虑哪些问题?
表空间管理时,应该遵循以下原则:
●将数据字典与用户数据分离;
●将回退数据与用户数据分离;
●将表空间的数据文件分散保存到不同的硬盘上;
●为不同的应用创建独立的表空间。
11、Oracle数据库进程的类型有哪些?
分别完成什么任务?
Oracle数据库进程包括用户进程、服务器进程和后台进程三类。
其中,用户进程用户建立用户数据库服务器的连接;
服务器进程接受用户连接请求;
后台进程实现数据库的后台操作。
12、Oracle数据库后台进程有哪些?
其功能是什么?
racle实例的主要后台进程包括数据库写进程(DBWR)、日志写进程(LGWR)、检查点进程(CKPT)、系统监控进程(SMON)、进程监控进程(PMON)、归档进程(ARCH)、恢复进程(RECO)、锁进程(LCKn)、调度进程(Dnnn)等。
DBWR进程负责把数据高速缓冲区中已经被修改过的数据(“脏”缓存块)成批写入数据文件中永久保存,同时使数据高速缓冲区有更多的空闲缓存块,保证服务器进程将所需要的数据从数据文件读取到数据高速缓冲区中,提高缓存命中率。
LGWR日志写入进程负责把重做日志缓冲区的重做记录写入重做日志文件中永久保存。
CKPT进程的作用就是执行检查点,更新控制文件与数据文件的头部,使其同步;
,触发DBWR进程,将脏缓存块写入数据文件。
SMON进程的主要功能包括:
在实例启动时负责对数据库进行恢复;
回收不再使用的临时空间;
将各个表空间的空闲碎片合并。
PMON进程的主要功能包括:
负责恢复失败的用户进程或服务器进程,并且释放进程所占用的资源;
清除非正常中断的用户进程留下的孤儿会话,回退未提交的事务,释放会话所占用的锁、SGA、PGA等资源;
监控调度进程和服务器进程的状态,如果它们失败,则尝试重新启动它们,并释放它们所占用的各种资源。
ARCH进程用户归档重做日志文件。
RECO进程用户数据库恢复。
13、DBWR进程如何工作的?
数据库写入进程负责把数据高速缓冲区中已经被修改过的数据(“脏”缓存块)成批写入数据文件中永久保存,同时使数据高速缓冲区有更多的空闲缓存块,保证服务器进程将所需要的数据从数据文件读取到数据高速缓冲区中,提高缓存命中率。
当下列某个条件满足时,DBWR进程将启动,将数据高速缓冲区中的脏数据写入数据文件。
●服务器进程在数据高速缓存区中搜索一定数量的缓存块后,仍然没有找不到可用的空闲缓存块,此时DBWR进程将被启动。
●检查点发生时,将启动DBWR进程。
●当数据高速缓冲区中LRU列表长度达到初始化参数DB_BLOCK_WRITE_BATCH指定值的一半时,DBWR进程将被启动。
DBWR进程发生超时(大约3秒),DBWR进程将被启动。
14、LGWR进程是如何工作的?
日志写入进程负责把重做日志缓冲区的重做记录写入重做日志文件中永久保存。
DBWR进程在工作之前,需要了解LGWR进程是否已经把相关的日志缓冲区中的重做记录写入重做日志文件中。
如果还没有写入重做日志文件,DBWR进程将通知LGWR进程完成相应的工作,然后DBWR进程才开始写入。
这样可以保证先将与脏缓存块相关的重做记录信息写入重做日志文件,然后将脏缓存块写入数据文件,即先写重做日志文件,后写数据文件。
当下列事件发生时,LGWR进程将重做日志缓冲区中的重做记录写入重做日志文件。
●用户通过COMMIT语句提交当前事务。
●重做日志缓冲区被写满三分之一。
●DBWR进程开始将脏缓存块写入数据文件。
LGWR进程超时(大约3秒),LGWR进程将启动。
15、可以进行Oracle数据库启动与关闭管理的工具有哪些?
常用的数据库启动与关闭工具包括:
SQL*PLUS、OEM、RMAN等。
16、说明数据库启动的过程?
数据库启动时首先根据初始化参数文件创建并启动实例,然后根据控制文件加载数据文件和充作日志文件,最后打开数据文件和重做日志文件。
17、说明数据库关闭的步骤?
数据库关闭时首先关闭数据文件和重做日志文件,然后卸载数据文件和重做日志文件,关闭控制文件,最后释放内存结构和后台进程,即关闭实例。
18、说明在数据库启动和关闭的过程中,初始参数文件、控制文件、重做日志文件的作用?
利用初始化参数文件中参数设置创建并启动实例;
利用控制文件中的信息定位并加载数据文件和重做日志文件。
重做日志文件用户在数据库运行过程中记录用户对数据库的修改操作。
19、数据库中有哪些类型的表?
各有什么特征?
在Oracle数据库中,根据表生存周期不同,可以分为永久性表和临时表;
根据表中数据组织方式不同,可以分为标准表、索引化表和分区表。
索引化表是一种特殊的表,它按B树的结构来组织和存储数据,将表的数据和索引的数据存储在一起。
分区表是将一个表分成若干个独立的组成部分进行存储和管理。
20、表的约束有哪几种?
分别起什么作用?
表的约束包括:
Ø
主键约束:
定义了主键约束的列取值不能为空,也不能重复。
唯一值约束:
定义了唯一值约束的列取值不能重复。
检查约束:
定义了检查约束的列取值要满足检查条件。
外键约束:
定义了外键约束的列取值要么是主表参照列的值,要么是空值。
空/非空约束:
定义了非空约束的列取值不能为空。
21、说明索引的作用,以及Oracle数据库中索引的类型?
索引用于提高数据的查询效率。
根据索引值是否唯一,可以分为唯一性索引和非唯一性索引;
根据索引的组织结构不同,可以分为平衡树索引和位图索引;
根据索引基于的列数不同可以分为单列索引和复合索引。
22、简述Oracle数据库中分区的概念,对表和索引进行分区管理有何优点?
所谓分区是指将一个巨型表或巨型索引分成若干个独立的组成部分进行存储和管理,每一个小的、可以独立管理的部分,称为原来表或索引的分区。
对巨型表进行分区后,即可以对整个表进行操作,也可以针对特定的分区进行操作,从而简化了对表的管理和维护。
23、说明分区表的特点及其应用?
表分区技术是在超大型数据库(VLDB)中将大表及其索引通过分区(patition)的形式分割为若干较小、可管理的小块,并且每一分区可进一步划分为更小的子分区(subpartition)。
而这种分区对于应用来说是透明的。
Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。
通过对表进行分区,可以获得以下的好处:
1)增强可用性:
如果表的某个分区出现故障,表在其他分区的数据仍然可用;
2)维护方便:
如果表的某个分区出现故障,需要修复数据,只修复该分区即可;
3)均衡I/O:
可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能;
4)改善查询性能:
对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。
什么时候使用分区表
1、表的大小超过2GB。
2、表中包含历史数据,新的数据被增加到新的分区中。
24、Oracle数据库的安全控制机制有哪些?
Oracle数据库的安全机制包括:
用户管理、权限管理、角色管理、表空间设置和配额管理、用户资源限制以及数据库审计等。
25、Oracle数据库用户认证方式有哪些?
Oracle提供了3种用户认证机制,即数据库身份认证、外部身份认证和全局身份认证。
只有通过认证的用户才能访问数据库。
26、Oracle数据库中的权限有哪几种?
Oracle数据库中权限有两类,系统权限和对象权限。
系统权限是指在数据库级别执行某种操作的权限,或针对某一类对象执行某种操作的权限。
对象权限是指对某个特定的数据库对象执行某种操作的权限。
例如,对特定表的插入、删除、修改、查询的权限。
1.简述回滚段的作用
回滚段用于存放数据修改之前的值(也包括数据修改前的位置)。
回滚段的头部包含正在使用的回滚段事物的信息。
一个事物只能使用一个回滚段来存放回滚信息,而一个回滚段可以存放多个事物的回滚信息。
回滚段用于对数据库修改时,保存原有的数据,以便稍后可以通过使用rollback操作来恢复到修改之前的数据;
另外回滚段可以为数据库中的所有进程提供读一致性。
具体的作用有如下几项:
事物恢复事物正在处理时,例程失败,回滚段的信息保存在重做日志文件中,ORACLE将在下次打开数据库时利用回滚来恢复未提交的数据。
事物回滚:
当事物修改表中的数据时,该数据修改前的值会存放在回滚段中,当用户回滚事物时,ORACLE将会利用回滚段中的数据前影像来将修改的数据恢复到原来的值。
读一致性:
当一个会话正在修改数据时,其他的会话将看不到该会话未提交的修改。
而且,当一个语句正在执行时,该语句将看不到该语句开始执行后的未提交的修改。
2.回滚段的类型
1.系统回滚段
当数据库创建后,将自动创建一个系统回滚段,它位于SYSTEM表空间,用于处理涉及系统的CataLog的事物
2.非系统回滚段
拥有多个表空间的数据库至少应该有一个非系统回滚段,用于存放非系统表空间中对象的数据前映像。
3.DEFERED回滚段
该回滚段在表空间离线时由系统自动创建,当表空间再次在线时由系统自动删除,用于存放表空间离线时产生的回滚信息。
3简述大数据的含义和特点
含义:
版本1:
(bigdata),或称大数据,指的是所涉及的资料量规模巨大到无法通过目前主流软件工具,在合理时间内达到撷取、管理、处理并整理成为帮助企业经营决策更积极目的的资讯”
版本2:
数是需要新处理模式才能具有更强的决策力,洞察发现力和流程优化能力的海量,高增长率和多样化的信息资产
特点:
第一,数据规模大。
第二,数据种类多。
第三,数据要求处理速度快。
第四,数据价值密度低。
简答题
1.解释FUNCTION,PROCEDURE和PACKAGE区别?
存储过程(procedure):
存储过程是预先编译好的代码,可以作为PL/SQL语句直接调用执行;
过程存储没有返回值;
存储过程在规格说明中不包含return语句,即使包含也不起任何作用。
函数(function):
函数可以作为一个表达式的一部分使用;
函数必须有返回值;
函数在规格说明中必须包含至少一条return语句。
包(package):
包是一种数据库对象,将逻辑上相关的PL/SQL类型、对象和子程序组合成一个更大的单位;
包有包头和包体两部分组成;
包中可以将一些用于完成某功能的函数和存储过程放进包中可以方便维护。
2.什么是序列?
如何取得取某个序列的当前值?
1)序列是序列号生成器,可以为表中的行生成序列号,产生一组等间隔的系列数值。
2)先通过调用nextval产生序列的下一个值,再调用currval产生序列的当前值。
3.列举出至少三种表约束,各有什么作用?
1)实体完整性约束:
减少数据的冗余,作用于行,例如主键约束;
2)域完整性约束:
提高数据的准确性,作用于列,check检测;
3)引用完整性约束:
满足数据的一致性,作用于表与表之间,例如外键约束;
4.取当前系统时间点日期(不包括年月)的SQL写法是怎样的?
写法一:
selectto_char(sysdate,"ddhh24:
mi:
ss")fromdual;
写法二:
selectsubstr(to_char(sysdate,'
YYYYMMDDh24hh:
MM:
SS'
),)fromdual;
5.什么是同义词,分为哪几类?
1)同义词是数据库某些复杂对象的一个别名,用于简化对象访问和提高对象访问的安全性。
2)同义词分公有和私有两类。
公有同义词授权用户和system用户可以使用,私有同义词只有建立该同义词的用户才能使用。
6.请说明Oracle中存储过程和函数有什么区别,分别如何定义?
答:
存储过程:
Createorreplaceprocedure存储过程名(参数名in[输入、默认方式]数据类型,参数名out参数类型)
As
Begin
…………--执行DML操作
End;
函数:
createfunction函数名(变量名类型,变量名类型)
return返回类型is变量类型;
begin
…………--执行部分
return返回值;
End;
7.什么是角色,如何创建一个角色并把角色赋予指定账户?
1)角色是具有名称的一组相关权限的组合。
2)创建角色有验证方式和非验证方式两种。
例如:
--创建public_role和private_role角色
Createrolepublic_rolenotidentified;
Createroleprivate_roleidentifiedbyprivate;
--给public_role角色授予某些系统权限和对象权限,如select,update
Grantselect,updateonscott.emptopublic_role;
3)把角色赋予指定账户的sql语句和直接把某一权限赋予指定账户相似。
例如:
--把角色public_role授予给用户wangcai
Grantpublic_roletowangcaiwithadminoption;
编程题:
1.编写PL程序块循环给scott.emp表中所有职工增加工资,每次增加100元,直到平均工资高于5000或任一职工的工资超过6000元为止,最后显示出给所有员工一共增加了多少工资。
DECLARE
--声明变量
avg_salemp.sal%TYPE;
max_salemp.sal%TYPE;
v_countnumber:
=0;
BEGIN
--循环遍历
loop
SELECTAVG(sal)INTOavg_salFROMemp;
SELECTMAX(sal)INTOmax_salFROMemp;
--退出条件判断
EXITWHENavg_sal>
5000ORmax_sal>
6000;
UPDATEempSETsal=sal+100;
v_count:
=v_count+SQL%ROWCOUNT;
ENDLOOP;
--打印结果
dbms_output.put_line('
职工工资增加了¥'
||v_count*100);
END;
2.编写一个PL块,定义一个静态游标存储scott.emp表中所有雇员的员empno、ename和sal,并使用循环打印出所有数据。
declare
cursorcur_empisselect*fromemp;
--创建一个游标变量
v_erowemp%rowtype;
--存储结果集每行变量名
begin
opencur_emp;
--打开游标
loop--开始遍历游标
fetchcur_empintov_erow;
exitwhencur_emp%notfound;
--打印员工信息
员工编号:
'
||v_erow.empno||'
员工姓名:
||v_erow.ename||'
员工工资:
||v_erow.sal);
endloop;
end;
3.编写一个存储过程upsal接收一个员工号,如果该员工职位是MANAGER,并且在DALLAS工作,那么就给他薪金加15%;
如果该员工职位是CLERK,并且在NEWYORK工作,那么就给他薪金扣除5%;
其他情况不作处理。
--创建存储过程
CREATEORREPLACEPROCEDUREupsal(v_empnoinemp.empno%TYPE)
AS
v_job%TYPE;
v_locdept.loc%TYPE;
--查询数据
SELECTjob,locINTOv_job,v_locFROMemp,deptWHEREempno=v_empnoANDemp.deptno=dept.deptno;
--显示数据
IFv_job='
MANAGER'
ANDv_loc='
DALLAS'
THEN
UPDATEempSETsal=sal*WHEREempno=v_empno;
ELSIFv_job='
CLERK'
NEWYORK'
THEN
ELSE
NULL;
ENDIF;
--异常处理
EXCEPTION
WHENOTHERSTHEN
数据没更新!
);
--调用存储过程
DECLARE
v_empnoemp.empno%TYPE;
v_empno:
=&
请输入职工号;
upsal(v_empno);
4.编写一个存储过程comSalary,分别统计出scott.emp表中所有部门的平均工资,并且只显示出工资超过3500的部门。
并编写PL块调用此存储过程。
CREATEORREPLACEPROCEDUREcomSalary
CURSORcurISSELECTdeptno,AVG(sal)FROMempGROUPBYdeptno;
linecur%ROWTYPE;
OPENcur;
LOOP--开始遍历游标
FETCHcurINTOline;
EXITWHENcur%NOTFOUND;
SELECTAVG(sal)INTOavg_salFROMempWHEREdeptno=line.deptno;
IFavg_sal>
3500THEN--判断
dbms_output.put_line(line.deptno);
CLOSEcur;
--关闭游标
BEGIN
comSalary;