1、Oracle 10g 数据库管理应用与开发 课后习题答案(填空与选择题)填空题第二章1.用户对数据库的操作如果产生日志信息、则该日志信息首先被存储在日志缓冲区中,随后由 LGWR 进程保存到日志文件 。2.在 Oracle 的逻辑存储结构中,根据存储数据的类型,可以将段分为数据段、索引段、回退段、LOB 段和临时段。3.在多进程 Oracle 实例系统中,进程分为用户进程、后台进程和服务器进程。当一个用户运行应用程序,如 PRO*C 程序或一个 Oracle 工具(如 SQL*Plus) ,系统将为用户运行的应用程序建立一个用户进程。第三章1.标准的 SQL 语言语句类型可以分为:数据定义语句
2、(DDL) 、数据操纵语句(DML)和数据控制语句(DCL) 。2.在需要滤除查询结果中重复的行时,必须使用关键字 Distinct;在需要返回查询结果中的所有行时,可以使用关键字 ALL。第四章1.创建一个 UPDATE 语句来修改 ARTISTS 表中的数据,并且把每一行的 T_ID 值都改成15,应该使用的 SQL 语句是 update artists set t_id=15;。2.使用 describe 命令可以显示表的结构信息。3.使用 SQL*Plus 的 get 命令可以将文件检索到缓冲区,并且不执行。4.当设置了多个列的显示属性后,如果清除设置的显示属性,可以使用命令 clea
3、r column,而当要清除某列具体的显示属性时,需要使用命令 OFF/column 列名 clear。5.使用 SAVE 命令可以将缓冲区中的 SQL 命令保存到一个文件中,并且可以使用 Start 命令运行该文件。6.要设置 SQL*Plus 显示数字时的格式可以使用 NumFormat 命令,而要设置某个数字列的显示格式要使用 Column 命令。第五章1.ROWID 实际上保存的是记录的物理地址,2.在 STORAGE 子句中可以设置 6 个存储参数。其中,Initial 指定为表中的数据分配的第一个盘区的大小;Next 指定为存储表中的数据分配的第二个盘区大小;Pctincrease
4、 指定从第二个盘区之后,每个盘区相对于上一个盘区的增长百分比;Minextents 指定允许为表中的数据所分配的最小盘区数目;Maxextents 指定允许为表中的数据所分配的最大盘区数目。3.通过数据块空间管理参数可以控制数据块中空闲空间的使用方法,其中 Pctfree 用于控制数据块的更新预留的空间,而 Pctused 用于控制数据块在删除时释放空间的门槛。4.为 Student 表手动分配存储空间,并且大小由 NEXT 参数设置,则应使用的语句为Alter table Student allocate extent; ;如果为 Student 表手动分配了一个大小为 128KB 的新盘区
5、,则应使用的语句为 Alter table Student allocate extent(size 128k); 。5.填写下面的语句,使其可以为 Class 表的 ID 列添加一个名为 PK_CLASS_ID 的主键约束。Add constraint PK_CLASS_ID PRIMARY KEY(ID)6.假设已经创建了 CHAINED_ROWS 表,填写下面的语句,以便对“业务员信息”表进行链接记录分析:ANALYZE TABLE 业务员信息List chained rows into chained_rows第六章。1.自然连接为具有相同名称的列自动进行记录匹配,它不必指定任何同等连
6、接条件。2.集合运算符 UNION 实现了集合的并运算,操作 INTERSECT 实现了对集合的交运算,而MINUS 则实现了减运算。3.使用关键字连接子查询时,EXISTS 关键只注重子查询是否返回行,第七章1.PL/SQL 程序块主要包含 3 个主要部分:声明部分、可执行部分和 异常处理部分。2.自定义异常必须使用 raise 语句引发。3.查看操作在数据表中所影响的行数,可通过游标的%RowCount 属性实现。 第八章第九章1.为了建立外部表,首先需要指示数据文件在操作系统上的位置。现在假设在操作系统的F:DATAFILE 文件夹中存有一个数据文件,使用 create director
7、y exterior_data as F:DATAFILE;语句使 Oracle 可以访问数据文件。2.在使用 CREATE TABLE 语句创建索引组织表时,必须使用 organization index 子句指示创建的表为索引组织表,并且为索引组织表指定主键。3.PCTTHRESHOLD 指定一个数据块的百分比,当一行中的数据占用空间大于这个百分比时,该行将被分隔到两个位置存储:主键列被存储在基本索引段中,所有其他列被存储在溢出段中。4.Oracle 中的临时表可以分为事务级临时表和会话级临时表,创建事务级别的临时表,需要使用 on commit delete rows 子句;创建一个会话
8、级别的临时表,则需要使用 on commit preserver rows 子句。5.在创建对象类型时,用户不必特意创建构造函数,它由系统隐式创建,名称与对象类型的名称相同,并且它会接收对象类型的所有属性作为它的参数。6.如果用户想要对对象类型的实例进行比较排序,则需要使用映射方法 Map,它最重要的一个特点是:当在 WHERE 或 ORDER BY 等比较关系子句中使用对象时会被间接地使用。7.有两种方法向对象表添加数据:一种是像关系表一样在 INSERT 的 VALUES 子句中,为对象的每个属性提供值,隐式地创建对象类型实例,向对象表添加数据;另一种方式是显式地创建对象实例,然后再将它添
9、加到对象表。8.Oracle 数据库提供对表或索引的分区方法有 5 种:范围分区、散列分区、列表分区、组合范围散列分区和组合范围列表分区。9.簇是一种用于存储数据表中数据的方法。簇实际是一组表,由一组共享相同数据块的多个表组成。第十章1.B 树索引可以是唯一的或者 不唯一的,唯一的 B 树索引可以保证索引列上不会有重复的值。2.在为表中某个列定义 PRIMART KEY 约束 PK_ID 后,则系统默认创建的索引名为PK_ID。3.如果表中某列的基数比较低,则应该在该列上创建位图索引。4.如果要获知索引的使用情况,可以通过查询 V$OBJECT_USAGE 视图;而要获知索引的当前状态,可以查
10、询 Index_Stats 视图。第十一章1.在不为视图指定列名的情况下,视图列的名称将使用表列的名称。2.视图与数据库中的表非常相似,用户也可以在视图进行 INSERT、UPDATE 、和 DELETE操作。通过视图修改数据时,实际上是在修改基本表中的数据;相应地,改变基本表中的数据也会反映到该表产生的视图中。3.视图是否可以更新,这取决于定义视图的 SELECT 语句,通常情况下,该语句越复杂,创建的视图可以更新的可能性也就越小。4.下面的语句创建了一个序列对象,该序列对象的开始数为 2,每次递增 2,当大于 1000后,序列值重新返回到 2.在空白处填写适当的代码,完成上述要求。Crea
11、te sequence seg_testStart with 2Increment by 2Maxvalue 1000Cycle;第十二章1.假设有一个表 TEST,它仅包含一个字段 DATA。现在创建一个触发器,实现将添加的数据变大写。在下面的空白处填写适当的语句,使之可以正常运行。Create or replace trigger test_triggerAfter insert on TEST for each rowBegin:new.data:=upper(:new.data);End;2.BEFORE 和 AFTER 指定了触发器的触发时间。当为一个表配置了约束时,它们将会特别有用
12、,BEFORE 可以规定 Oracle 在应用约束前调用触发器,而 AFTER 规定在应用约束后调用触发器。3.假设有一个名为 ACTION_TYPE 的表,它记录了对 STUDENT 表的操作。在空白处填写适当的代码,完成上述功能。Create or replace trigger biud_student_triggerBefore insert or update or delete on studentDeclareAction action_type.type%type;Beginif inserting then action:=INSERT;elsif updating then
13、 action:=UPDATE;elsif deleting then action:=DELETE;end if;insert into action_type value(user,action);End;第十三章1.在设置事务隔离层时,需要使用关键字 set transaction。3.可以用 SET CONSTRAINT constraint_name DEFERRED 语句,启用某个约束的延期应用,而使用 SET CONSTRAINT ALL DEFERRED 语句可以设置本事务中所有约束的延期应用;语句 SET CONSTRAINT ALL IMMEDIATE 可以设置约束的应用。
14、4.在众多的事务控制语句中,用来撤销事务的操作的语句为 ROLLBACK,用于持久化事务对数据库操作的语句是 COMMIT。5.当 Oracle 检测到死锁后,它会选择一个事务退出。选择退出事务的原则是执行修改数目最小的事务。6.锁粒度与数据库系统的并发度和并发控制的开销密切相关。锁粒度越大,数据库中所能够使用的资源也就越少,并发度也就越小,系统开销也就越小。7.当对某个表加 SRX 锁时,则表中行的锁类型为 DML 锁。第十四章1.如果要获取数据库中创建的配置文件的信息,可以通过查询数据字典视图DBA_profiles。2.在 Oracle 数据库中将权限分为两类,即系统权限和对象权限。系统
15、权限是指在系统级控制数据库的存取和使用机制,对象权限是指在模式对象上控制存取和使用的机制。3.角色是具有名称的一组相关权限的组合。4.连接到数据库的最低系统预定义角色是 connect。5.在用户连接到数据库后,可以查询数据字典 role_sys_privs 了解用户所具有的系统权限。第十五章1.表空间的管理类型可以分为数据字典管理和本地化管理。2.在 Oracle 的早期版本中,对撤销信息的管理采用手动管理撤销,从 Oracle 9i 后采用自动撤销管理方式管理撤销信息。3.一个表空间具有离线(OFFLINE) 、在线(ONLINE) 、只读(READ ONLY)、读写(READWRITE)
16、状态。4.在创建 UNDO 表空间时,所使用的表空间管理方式为本地化管理,并且盘区的管理方式只允许使用 AutoAllOcate 方式。5.在创建本地化管理临时表空间时,不得指定盘区的管理方式为 AutoAllOcate,临时表空间的盘区管理统一使用 uniform 方式。选择题第二章2.在全局存储区 SGA 中,哪部分内存区域是循环使用的? B A.数据缓冲区 B.日志缓冲区 C.共享池 D.大池3.解析后的 SQL 语句在 SGA 的哪个区域中进行缓存? C A.数据缓冲区 B.日志缓冲区 C.共享池 D.大池4.如果一个服务进程非正常终止,Oracle 系统将使用下列哪一个进程来释放它所
17、占用的资源? D A.DBWR B.LGWR C.SMON D.PMON5.下列哪一个进程和数据库部件可以保证用户对数据库所做的修改在没有保存的情况下,不会发生丢失修改数据? C A.DBWR 和数据文件 B.LGWR 和日志文件组 C.CKPT 和控制文件 D.ARCH 和归档日志文件第三章5.HAVING 子句的作用是 B A.查询结果的分组条件 B.组的筛选条件 C.限定返回的行的判断条件 D.对结果集进行排序8.当使用三角函数 COS 求余弦时,应以 B 为单位传递参数。A.角度 B.弧度 C.角度和弧度均可 D.上述都不对第四章7.以下的哪个命令可以将 SQL 命令保存到文件中 A
18、。而哪个命令可以将 SQL 命令的运行结果保存到文件中 B 。A.SAVE B.SPOOL C.GET D.INPUT第五章4.下列哪一项不是伪列 ROWID 的作用? D A.保存记录的物理地址 B.快速查询指定的记录 C.标识各条记录 D.保存记录的头信息7.为了减少表中的链接记录和迁移记录,应当增大表的哪一个存储参数? A A.PCTFREE B.PCTUSED C.MAXEXTENTS D.PCTINCREASE第六章1.下列哪一种连接与逗号分隔连接执行的效果相同? C A.外连接 B.交叉连接 C.自然连接 D.内连接2.如果只需要返回匹配的列,则应当使用哪种连接? A A.内连接
19、B.交叉连接 C.左连接 D.全连接第七章3.只能存储一个值的变量是哪种变量? B A.游标 B.标量变量 C.游标变量 D.记录变量5.下列哪一项可以正确地引用记录变量中的一个值? B A.rec_abc(1); B.rec_abc(1).col; C.rec_abc.col; D.rec_abc.first(); 第八章 8.可以引用哪个数据字典视图来查看软件包中包含的代码? C A.USER_OBJECTS B.USER_PACKAGE_TEXT C.USER_SOURCE D.USER_TEXT10.当满足下列哪种条件时,允许两个过程具有相同的名称? B.参数的数量或数据类型不相同时第
20、九章3.下列关于对象的描述哪项是错误的? B A.为对象表添加数据时,可以在 INSERT 语句的 VALUES 子句中直接提供值,隐式创建对象类型实例,然后向表中添加数据;也可以显式创建对象实例后向表中添加数据B.对象表与其他类型的表一样,都是作为列的集合C.对象表中的每个对象都有一个 OID,OID 是全局唯一的,表示每一个对象的实例D.查询对象表时,对象表中的数据以关系的形式显示,但也可以通过使用 VALUE()函数以对象实例的形式显示4.假设要对“商品信息”表进行分区处理,并且根据商品的产地进行分区,则应采用下列哪一种分区方法? C A.范围分区 B.散列分区 C.列表分区 D.组合范
21、围散列分区6.下列哪一项是关于簇和簇表不正确的描述? D A.簇实际上是一组表 B.因为簇将不同表的相关行一起存储到相同的数据块中,所以合理使用簇可以帮助减少查询数据所需的磁盘读取量 C.簇表是簇中某一个表 D.在创建簇和簇表之后就可以向其中添加数据第十章1.查看下面的语句创建了哪一种索引? C CREATE INDEX test_index ON student(stuno,sname)TABLESPACE users STORAGE(INITIAL 64k,next 32k);A.全局分区索引 B.位图索引 C.复合索引 D.基于函数的索引2.使用 ALTER INDEX.REBUILD
22、语句不可以执行下面的哪个任务? D A.将反向键索引重建为普通索引 B.将一个索引移动到另一个表空间C.将位图索引更改为普通索引 D.将一个索引分区移动到另一个表空间3.下列关于约束与索引的说法中,哪一项是不正确的? D A.在字段上定义 PRIMART KEY 约束时会自动创建 B 树唯一索引B.在字段上定义 UNIQUE 约束时会自动创建一个 B 树唯一索引C.默认情况下,禁用约束会删除对应的索引,而激活约束会自动重建相应的索引D.定义 FOREIGN KEY 约束时会创建一个 B 树唯一索引4.假设 EMPLOYEE 表包含一个 MARRIAGE 列,用于描述职工的婚姻状况,则应该在该字
23、段上创建什么类型的索引? D A.B 树唯一索引 B.B 树不唯一索引 C.基于函数的索引 D.位图索引5.下列关于索引的描述哪一项是不正确的? B A.表是否具有索引不会影响到所使用的 SQL 编写形式B.在为表创建索引后,所有的查询操作都会使用索引C.为表创建索引后,可以提高查询的执行速度D.在为表创建索引后,Oracle 优化器将根据具体情况决定是否采用索引6.如果经常执行类似于下面的查询语句:SELECT * from student where Substr(sname,0,2)=刘应当为 student 表中的 sname 列创建哪一种类型的索引? D A.B 树唯一索引 B.位图
24、索引 C.B 树不唯一索引 D.基于函数的索引7.假设在一个表的 3 个字段 NAME、SEX 和 MONTH_OF_BIRTH 中分别保存姓名、性别和出生的月份数据,则应当为这 3 个字段分别创建何种类型的索引? D A.全部创建 B 树索引 B.全部创建位图索引 C.分别创建 B 树索引、位图索引和位图索引D.分别创建 B 树索引、位图索引和基于函数的索引8.如果创建的表其主键可以自动编号,则应该为主键创建的索引是哪种类型? A A.反向键索引 B.B 树索引 C.位图索引 D.基于函数的索引第十一章1.如果允许用户对视图进行更新和插入操作,但是又要防止用户将不符合视图约束条件的记录添加到
25、视图,应当在定义视图时指定下列哪一个子句? C.WITH CHECK OPTION 4.在下列各选项中,关于序列的描述哪一项是不正确的? D A.序列是 Oracle 提供的用于产生一系列唯一数字的数据库对象B.序列并不占用实际的存储空间C.使用序列时,需要用到序列的两个伪列 NEXTVAL 与 CURRVAL。其中,NEXTVAL 将返回序列生成的下一个值,而 CURRVAL 返回序列的当前值D.在任何时候都可以使用序列的伪列 CURRVAL,以返回当前序列值5.在下列各选项中,关于同义词的描述哪一项是不正确的? B A.同义词是数据库对象的一个替代名,在使用同义词时,Oracle 会将其翻
26、译为对应的对象名称B.在创建同义词时,所替代的模式对象必须存在C.Oracle 中的同义词分为公有同义词和私有同义词D.公有同义词在数据库中所有的用户都可以使用;私有同义词由创建它的用户所拥有第十二章2.在使用 CREATE TRIGGER 语句创建行级触发器时,哪一个语句用来引用旧数据? D A.FOR EACH B.ON C.REFERENCING D.OLD4.替代触发器可以被附加到哪一类数据库对象上? C A.表 B.序列 C.视图 D.簇5.下列哪个语句用于禁用触发器? C A.ALTER TABLE B.MODIFY TRIGGER C.ALTER TRIGGER D.DROP T
27、RIGGER6.条件谓词在触发器中的作用是 A 。A.指定对不同事件执行不同的操作 B.在 UPDATE 中引用新值和旧值C.向触发器添加 WHEN 子句 D.在执行触发器前必须满足谓词条件7.可以使用哪个子句来更改相关性标识符的名称? A A.REFERENCING B.WHEN C.INSTEAD-OF D.RENAME8.下列哪个相关性标识符是可用的,并且包括了 DELETE 触发器中要更新的值? A A.OLD B.NEW C.REFERENCING D.以上都不是第十三章1.下列关于提交事务的叙述哪一项是正确的? A A.事务提交后,它对数据库所做的修改将永久保存到数据库中2.下列哪
28、个语句会终止事务? D.COMMIT3.假如当前数据库有两个并发的事务,其中,第一个事务修改表中的数据,第二个事务在将修改提交约数据库前查看这些数据。如果第一个事务执行回滚操作,则会发生哪种读取现象? C A.假读 B.非重复读取 C.错读 D.重复读4.当一个事务基于某些搜索条件读取一个数据表,第二个事务更新表中的数据,那么,当第一个事务再次读取数据时,返回的结果会因为搜索条件而返回不同的结果。这种现象叫做什么? A A.假读 B.非重复读取 C.错读 D.重复读5.下列选项中,哪个选项用于设置事务的隔离层? A A.READ ONLY B.UPDATE C.LOCAL D.ISOLATION LEVEL READ COMMITTED IS6.下列哪一个锁模式不属于 Oracle? D A.共享锁 B.排他锁 C.行级共享锁 D.死锁7.下列关于 Oracle 支持的锁粒度描述正确的是? B A.数据库级、表级、行级和列级 B.数据库级、表级、行级 C.行级、列级 D.列级、表级8.在用 SET TRANSACTION 语句设置事务的属性时,为了确保事务中不会发生非重复读