Oracle期末模拟题.docx
《Oracle期末模拟题.docx》由会员分享,可在线阅读,更多相关《Oracle期末模拟题.docx(13页珍藏版)》请在冰豆网上搜索。
Oracle期末模拟题
一.单选题13分
1.Oracle数据库的恢复可分为两大类:
Instancerecovery和mediarecovery,其中前者是由(A)进程自动执行的?
A.SMONB.PMONC.DBWND.LGWN
2.显示数据库归档模式的数据字典是(C)
A.V$ACCESSB.V$SESSIONC.V$ARCHIVELOGD.V$CONTEXT
3.PL/SQL不包括以下哪一部分?
(C)
A.DECLAREB.BEGINC.ENDD.EXCEPTION
4.增加外键约束的时候加()选项可以在子表记录存在的情况下直接删除父表记录,而不用受约束的限制;在delete语句的末尾加上(),就可以实现两张表的级删除。
(B)
A.ONDELETE,\
B.ONDELETECASCADE,CASCADE
C.ONDELETE,CASCADE
D.ONDELETECASCADE,\
5.selectdistinctname,idfromA,这句语句去重的是(A)
A.name,idB.nameC.idD.都没有去重
6.selectid,distinctnamefromA,这句语句的执行情况是(D)
A.对id和name同时去重
B.对name去重
C.执行成功,但没有去重
D.会提示错误,因为distinct必须放在开头
7.若关系中的某一属性组的值能唯一地标识一个元组,我们称之为(B)
A.主码B.候选码C.外码D.联系
8.以下不属于数据模型的三要素的是(C)
A.数据结构B.数据操纵C.数据控制D.完整性约束
9.在Oracle的逻辑存储结构中,(A)是最小的I/O单元。
A.块B.区C.段D.表空间
10.解析后的SQL语句在SGA的哪个区域中进行缓存?
(C)
A.数据缓冲区B.日志缓存区C.共享池D.大池
11.如果一个服务进程非正常终止,Oracle系统将使用下列哪一个进程来释放它所占用的资源?
(D)
A.DBWRB.LGWRC.SMOND.PMON
12.当数据库运行在归档模式下时,如果发生日志切换,为了保证不覆盖旧的日志信息,系统将启动如下哪个进程?
(D)
A.DBWRB.LGWRC.SMOND.ARCH
13.如果服务器进程无法在数据缓冲区中找到空闲缓存块,以添加从数据文件中读取的数据 块,则将启动如下哪一个进程?
(D)
A.CKPT B.SMON C.LGWR D.DBWR
14.下列哪一个进程用于将修改过的数据从内存保存到磁盘数据文件中?
( A)
A.DBWR B.LGWR C.RECO D.ARCH
15.SQL*Plus工具中,复制输出结果到文件的命令是(A)
A.spollB.editC.describeD.get
16.将SQL*Plus的显示结果输出到d:
\data1.txt文件中的命令是(D)
A.writetod:
\data1.txtB.spooltod:
\data1.txt
C.spoolond:
\data1.txtD.spoold:
\data1.txt
17.在SQL*Plus中执行刚输入的一条命令用(A)
A.正斜杠(/)B.反斜杠(\)C.感叹号(!
)D.句号(.)
18.创建大文件表空间,使用(B)关键字
A.temporaryB.bigfileC.undoD.blocksize
19.()选项表示删除表空间的所有对象,()表示级联删除所有数据对象(C)
A.includingcontents,includingcontents
B.includingcontentsanddatafiles,includingcontentsanddatafiles
C.includingcontents,includingcontentsanddatafiles
D.includingcontentsanddatafiles,includingcontents
20.在自己的模式中创建一个新表,用户必须具有()系统权限,如果要在其他用户模式中创建表,则必须具有()系统权限。
(B)
A.createtable,createtableB.createtable,createanytable
C.createanytable,createtableD.createanytable,createanytable
21.如果要为学生表的三个字段:
姓名、性别和出生日期分别创建索引,该如何创建?
(D)
A.都创建B树索引
B.都创建位图索引
C.分别创建B树索引、位图索引和位图索引
D.分别创建B树索引、位图索引和B树索引
22.唯一约束与主键约束的一个区别是(C)
A.唯一位数的字段的值不可以有重复值B.唯一约束的字段的值可以不是唯一的
C.唯一约束的字段不可以为空值D.唯一约束的字段可以为空值
23.如果在包规范mypackage中没有声明某个过程myprocedure,而在创建包体时包含了该过程,那么对该过程叙述正确的是(D)
A.包体将无法创建成功,因为在包体中含有包规范中没有声明的元素
B.该过程影响包体的创建,因为它属于包的私有元素
C.可以通过mypackage.myprocedure调用该过程
D.无法在包体外使用该过程
24.向用户授予系统权限时,使用()选项表示该用户可以将此系统权限再授予其他用户。
向用户授予对象权限时,使用()选项表示该用户可以将此权限再授予其他用户。
(A)
A.withadminoption,withgrantoptionB.withgrantoption,withadminoption
C.withadminoption,withadminoptionD.withgrantoption,withgrantoption
二.多选题10分
1.SGA由什么组成(ABC)
A、共享池B、数据缓存区C、重做日志缓存区
2.后台进程主要完成什么任务?
(ABCD)
A、在内存和磁盘之间进行I/O操作B、监视各个服务器的进程状态
C、协调各个服务器进程的任务D、维护系统性能和可靠性
3.Oracle数据库系统的物理存储结构主要是由三类文件组成,分别是(ACD)
A.数据文件B.地址文件C.控制文件D.日志文件
4.下列哪些是可以保证用户对数据库所做的修改在没有保存的情况下,不会丢失修改数据?
(AC)
A.CKPTB.LGWRC.控制文件D.日志文件组
5.表空间的状态属性主要有(ABCD)
A.联机B.读写C.只读D.脱机
6.下列关于数据文件的说法正确的是(AB)
A.数据文件有ONLINE、OFFLINE、OFFLINEDROP三种状态
B.ONLINE表示数据文件可以使用
C.OFFLINE表示当数据库运行在非存档模式下时,数据文件不可以使用
D.OFFLINE表示当数据库运行在存档模式下时,数据文件不可以使用
7.下列可以切换为脱机状态的表空间有(BCD)
A.系统表空间SYSTEMB.临时表空间TEMP
C.用户表空间USERD.索引表空间INDEX
8.以下哪些表空间不可重命名(ACD)
A.SYSTEM表空间B.USER表空间C.SYSAUX表空间D.OFFLINE状态的表空间
9.数据文件在哪些情况下不能被删除(ABC)
A.数据文件中存在数据
B.数据文件是表空间中唯一的或第一个数据文件
C.数据文件或数据文件所在的表空间处于只读状态
D.任何情况都不能删
10.关于模式的描述下列哪一项不正确?
(BC)
A.表或索引等模式对象一定属于某一个模式
B.在Oracle数据库中,模式和数据库用户并不是一一对应的。
C.一个表可以属于多个模式
D.一个模式可以拥有多个表
11.下列哪一项表述是正确的(ACD)
A.视图不占用实际的存储空间
B.索引不占用实际的存储空间
C.创建视图必须使用子查询
D.利用视图可以将复杂数据永久地保存起来
12.在DML语句中,删除记录可以用(CD)
A.insertB.updateC.deleteD.truncate
13.下列属于select查询的集合运算符的是(ABD)
A.unionB.intersectC.addD.minus
14.下列哪些是Oracle的伪列?
(ACD)
A.rowidB.row_number()C.levelD.rownum
15.下列哪些变量名不合法?
(ACD)
A._number01B.number01C.number-01D.number
16.调用存储过程的方式有(BCD)
A.使用/或RUN
B.使用EXECUE(简写EXEC)命令调用
C.使用CALL命令调用
D.在匿名的程序块中直接以过程名调用
17.系统全局区包括下面那些区域?
(ACD)
A.java池 B.软件代码区 C.数据缓冲区 D.日志缓冲区
18.在用户配置文件中能限定如下哪种资源?
(ACD)
A.单个用户的会话数 B.数据库的会话数
C.用户的密码有效期 D.用户的空闲时长
三.判断题7分
1.SGA(系统全局区)随着数据库实例的启动向操作系统申请分配一块内存结构,随着数据库实例的关闭而释放(对)
2.每一个Oracle数据库实例可以有多个SGA(错,每个Oracle数据库实例有且只有一个SGA,如果多个用户连接到同一个数据库实例,则在实例的SGA中数据可为多个用户共享)
3.数据高速缓存中的数据交换采用最近最少使用算法(LRU,LeastRecentlyUsed)。
(对)
4.Oracle先写数据再写日志(错,日志写优先原则)
5.日志缓冲区是个循环缓存区(对)
6.STARTUPFORCE启动到Mount状态(对)
7.用户退出会话后Oracle会自动删除临时表结构以及表中数据(错,用户退出会话后Oracle不会自动删除临时表结构,但会删除表中数据)
8.最基本的表类型是堆表(对)
9.使用游标更新数据要用到FORUPDATE语句(对)
10.替代触发器既能建立在视图上,又能建立在表上(错,替代触发器只能建立在视图上)
11.用户对数据库的操作如果产生日志信息,则该日志信息直接由DBWN进程保存到数据文件中(错,如果产生日志信息,则该日志信息首先被存储在日志缓存区,随后由LGWN进程保存到日志文件中)
12.每一个表空间由一个或多个数据文件组成,一个数据文件也可以属于多个表空间(错,一个数据文件只可以属于一个表空间)
13.修改存储过程是在创建存储过程的语句中添加orreplace选项(对)
14.启动所有角色应使用setroleallenable(错,应使用setroleall)
四.简答题30分
1.后台的可选进程包括什么?
它们各自的作用是?
Oracle后台进程主要包含SMON(系统监视进程)、DBWN(数据写进程)、PMON(进程监视进程)、CKPT(检查点进程)、LGWR(日志写进程)等进程。
DBWR:
数据库写入进程,负责将脏数据块从数据缓存写回磁盘。
LGWR:
日志写入进程,负责将日志缓冲区中的数据写入重做日志。
PMON:
进程监视进程,负责监视数据库的处理情况,并负责清除死掉的进程。
SMON:
系统监视进程,负责在实例启动时恢复实例,包括清除临时段以及恢复因系统崩溃而中断的事物。
CKPT:
检查点进程,负责向DBWR进程发送信号,要求执行一次检查点,并更新数据库的所有数据和控制文件。
2.数据字典:
user_;dba_;all_有什么区别?
USER_*存储了当前用户所拥有的对象信息;ALL_*存储了当前用户可以访问的对象信息;DBA_*存储了数据库所有对象的信息。
3.简述视图、索引、序列和同义词的含义。
视图是从一个或多个表或视图中提取出来的数据的一种表现形式。
索引是数据库中用于存放表中每一条记录的位置的一种对象,主要用于加快对标的查询操作。
序列也称为序列生成器,它能以串行方式生成一系列顺序整数。
同义词是表,索引,视图或其他模式对象的一个别名。
4.约束有哪些类型?
请简单描述。
主键约束:
确保一个表中没有重复主键值的数据行
唯一性约束:
确保表中值为非空的某列或列的组合具有唯一性.
检查约束:
限制列的取值范围.
外键约束:
使得数据库中表和表之间建立了父子关系.
非空约束:
限制列的取值不能为空.
5.简述char和varchar2两种字符数据类型的区别。
假设学生表中的姓名字段和性别字段均为字符类型,请问这两个字段在定义其数据类型时应分别选择CHAR和VARCHAR2的哪一个?
CHAR的长度是固定的,而VARCHAR2的长度是可以变化的。
CHAR的效率比VARCHAR2的效率稍高。
姓名字段应用VARCHAR2,性别字段应用CHAR。
6.标准的SQL语言的语句类型可分为哪三类,每种语句类型分别用来操作哪些语句?
(1)数据操纵语言(DML),DML允许用户对数据库中的数据进行查询、插入、更新和删除等操作,包括select,call,commit和rollback等等。
(2)数据定义语言(DDL),DDL用于创建和定义数据库对象,并且将对这些对象的定义保存到数据库中,包括create,alter,drop,rename和truncate。
(3)数据控制语言(DCL),DCL用来设置或更改数据库用户或角色的权限,包括grant和revoke。
7.简述INSTEADOF触发器的作用。
替代触发器用于执行一个替代操作来替代触发事件的操作,而触发事件本身最终不会被执行。
替代触发器只能建立在视图上,不能建立在表上。
用户在视图上执行的DML操作将被替代触发器的操作所代替。
五.应用题40分
1.自定义角色my_role,该角色拥有创建表的权限,创建用户my_user,将my_role以及更新表的权限赋予该用户。
createrolemy_role;
grantcreatetabletomy_role;
createusermy_user;
grantmy_role,updateanytabletomy_user;
2.写出为my_user授予在emp表上插入和更新权限(my_user可将此权限授予别人)的sql语句,并写出收回更新权限的sql语句。
grantinsert,updateonemptomy_userwithadminoption;
revokeupdateonempfrommy_user;
3.执行更新操作后如果要撤销应用什么语句?
提交到数据库应用什么语句?
写出以下要求的语句:
向scott.emp表中插入员工编号为1111的记录,设置一个保存点,然后用update命令将该记录的员工姓名修改为李明,然后用rollback命令回滚到保存点。
(1)rollback;
(2)commit;
(3)insertscott.emp(empno)values(1111);
savepointp1;
updatescott.empsetename=’李明’whereempno=1111;
rollbacktop1;
4.以sys登录,并将密码改为cat,以及修改默认表空间为user2。
connscott/tigerassysdba;
alteruserscottidentifiedbycat;
alteruserscottdefaulttablespaceuser2;
5.创建一个学生表(student),表中包括学号(sno)、姓名(sname)、年龄(sage)和性别(gender),并在该表的姓名字段创建名为sname_lower_index的基于LOWER函数的索引。
createtablestudent(snonumber(3)primarykey,snamevarchar2(8)constraintc1notnull,sagenumber
(2)check(sage<25),gendernumber
(1)check(genderin(1,2)));
createindexsname_lower_indexonstudent(lower(sname))tablespacemyspace;
6.定义参数游标emp_cursor,用FOR循环遍历查询到的指定部门的员工姓名。
DECLARE
CURSORemp_cursor(noNUMBER)
IS
SELECTenamefromscott.empWHEREdeptno=no;
BEGIN
FORemp_recordINemp_cursor(&no)
LOOP
dbms_output.put_line(‘姓名是:
’||emp_record.ename);
ENDLOOP;
END;
7.输入部门编号,按照下列加薪比例执行(用CASE实现,创建一个emp1表,修改emp1表的数据),并将更新前后的数据输出。
deptno
10
20
30
40
raise(%)
5%
10%
15%
20%
DECLARE
cursorcrs_caseTest
is
select*fromemplforupdateofsal;
r_caseTestcrs_caseTest%rowtype;
salInfoempl.sal%type;
BEGIN
forr_caseTestincrs_caseTestloop
case
whenr_caseTest.deptno=10then
5.含有双写字母的词,将双写改为单写,在词尾加t。
如:
keep—kept,sleep—slept,feel—felt,smell—smeltsalInfo:
=r_caseTest.sal*1.05;
whenr_caseTest.deptno=10then
write书写wrotewrittensalInfo:
=r_caseTest.sal*1.1;
hear听到heardheardwhenr_caseTest.deptno=10then
salInfo:
=r_caseTest.sal*1.15;
break打破brokebrokenwhenr_caseTest.deptno=10then
wake醒着woke/wakedwoke/waked/wokensalInfo:
=r_caseTest.sal*1.2;
endcase;
lose遗失lostlostupdateemplsetsal=salInfowherecurrentofcrs_caseTest;
send送/寄sentsentendloop;
END
8.
9.动词原形中文意思过去式过去分词首先利用scott.emp表和scott.dept表创建一个视图,然后在视图上创建一个替代触发器,允许用户利用视图修改基础表中的数据。
burn燃烧burnt/burnedburnt/burnedconnectscott/tiger;
dream做梦dreamed/dreamtdreamed/dreamtcreateviewemp_dept_viewasselectempno,ename,sal,dnamefromempe,deptdwheree.deptno=d.deptno;
createorreplacetriggerupdate_view
insteadofupdateonemp_dept_view
declare
iddepf.deptno%type;
begin
selectdeptnointoidfromdeptwheredname:
=:
new.dname;
updateempsetdeptno=idwhereempno=:
old.empno;
endupdate_view;
/
9.查询公司雇用的前8名雇员;查询公司的部门数;查询还没有分配部门的员工
selectename,hiredatefrom(selectename,hiredatefromemporderbyhiredate)whererownum<8;
selectcount(distinctdeptno)fromemp;
select*fromempwheredeptnoisnull;