为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > [计算机软件及应用]oracle 10g 数据库基础教程 孙风栋主编 课后习题答案 Oracle选择题中文

[计算机软件及应用]oracle 10g 数据库基础教程 孙风栋主编 课后习题答案 Oracle选择题中文

2018-01-16 50页 doc 167KB 77阅读

用户头像

is_633808

暂无简介

举报
[计算机软件及应用]oracle 10g 数据库基础教程 孙风栋主编 课后习题答案 Oracle选择题中文[计算机软件及应用]oracle 10g 数据库基础教程 孙风栋主编 课后习题答案 Oracle选择题中文 第3章 创建数据库 (1) 后台进程跟踪文件的位置是C A(LOGFILE_DEST B(ORACLE_HOME C(BACKGROUND_DUMP_DEST D(CORE_DUMP_DEST (2) 手动创建数据库的第一步是D A(启动实例 B(启动SQL*Plus 以SYSDBA身份连接Oracle C(查看系统的实例名 D(创建参数文件 (3) 关于控制文件以下正确的是A A(Oracle建议至少...
[计算机软件及应用]oracle 10g 数据库基础教程 孙风栋主编 课后习题答案  Oracle选择题中文
[计算机软件及应用]oracle 10g 数据库基础教程 孙风栋主编 课后习题答案 Oracle选择题中文 第3章 创建数据库 (1) 后台进程跟踪文件的位置是C A(LOGFILE_DEST B(ORACLE_HOME C(BACKGROUND_DUMP_DEST D(CORE_DUMP_DEST (2) 手动创建数据库的第一步是D A(启动实例 B(启动SQL*Plus 以SYSDBA身份连接Oracle C(查看系统的实例名 D(创建参数文件 (3) 关于控制文件以下正确的是A A(Oracle建议至少二个控制文件存放在二个磁盘分区 B(Oracle建议至少二个控制文件存放在一个磁盘分区 C(Oracle建议存放一个控制文件 D(一个控制文件不足以运行数据库 (4) 执行CREATE DATABASE命令之前,应该发出的命令是B A(STARTUP INSTANCE B(STARTUP NOMOUNT C(STARTUP MOUNT D(以上都不是 (5) 创建数据库时,Oracle如何得知需要创建的控制文件信息,A A(从初始化参数文件 B(从 CREATE DATABASE 命令 C(从环境变量 D(从$ORACLE_HOME目录名为 .ctl的文件 (6) 哪个脚本文件创建数据字典视图,A A(catalog.sql B(catproc.sql C(sql.sql D(dictionary.sql (7) 创建数据库时,DATAFILE子句能定义几个数据文件,D A(一个 B(二个 C(多个;仅一个属于系统表空间 D(多个;都属于系统表空间 (8) 谁拥有数据字典,A A(SYS B(SYSTEM C(DBA D(ORACLE (9) 在CREATE DATABASE命令中,非法子句是B A(MAXLOGMEMBERS B(MAXLOGGROUPS C(MAXDATAFILES D(MAXLOGHISTORY (10) 创建一个数据库至少需要几个控制文件,A A(一个 B(二个 C(三个 D(无 第5章 物理存储结构 (1) 关于联机重做日志,以下哪两个说法是正确的,BC A(所有日志组的所有文件都是同样大小 B(一组中的所有成员文件都是同样大小 C(成员文件应置于不同的磁盘 D(回滚段大小决定成员文件大小 (2) DBA使用哪个命令显示当前归档状态,A A(ARCHIVE LOG LIST B(FROM ARCHIVE LOGS C(SELECT * FROM V$THREAD D(SELECT * FROM ARCHIVE_LOG_LIST (3) 创建一个数据库需要多少个控制文件,A A(1 B(2 C(3 D(0 (4) 将下句补充完整:控制文件的建议配置是C A(每数据库一个控制文件 B(每磁盘一个控制文件 C(二个控制文件置于二个磁盘 D(二个控制文件置于一个磁盘 (5) 当创建控制文件时,数据库必须处于什么状态,B A(加载 B(未加载 C(打开 D(受限 (6) 哪个数据字典视图显示数据库处于归档状态,C A. V$INSTANCE B(V$LOG C(V$DATABASE D(V$THREAD (7) 把多路镜像控制文件存于不同磁盘最大的好处是B A(数据库性能提高 B(防止失败 C(提高归档速度 D(能并发访问提高控制文件的写入速度 (8) 哪个文件用于记录数据库的改变,并且用于实例的恢复,B A(Archive log file B(Redo log file C(Control file D(Alert log file (9) 一个实例可以建立几个归档进程,C A(5 B(4 C(10 D(取决于操作系统 (10) 定义归档目标地址时,哪两个参数不能一起使用,AB AC A(LOG_ARCHIVE_DEST and LOG_ARCHIVE_DUPLEX_DEST B(LOG_ARCHIVE_DEST and LOG_ARCHIVE_DEST_1 C(LOG_ARCHIVE_DEST and LOG_ARCHIVE_DEST_2 D(以上都不是;可以指定所有 的归档参数 第6章 逻辑存储结构 (1) 段的集合称为C A(区 B(段 C(表空间 D(数据库 (2) 当数据库崩溃,何时使用回滚信息,C A(在崩溃之前 B(恢复完成之后 C(数据库重新打开之后、恢复之前 D(数据库崩溃后回滚信息不被使用 (3) 数据字典表和视图存储在B A(USERS表空间 B(SYSTEM表空间 C(TEMPORARY表空间 D(以上三个中任意 (4) PCTFREE与PCTUSED之和不应超过A A(100 B(50 C(25 D(10 (5) 数据块的哪三个部分合称为块头部,C A(表目录、行目录和行数据 B(标题、表目录、空闲区 C(表目录、行目录、标题 D(块头部、行数据、行头部 (6) 数据库打开时,以下哪个表空间必须联机,A A(SYSTEM B(TEMPORARY C(ROLLBACK D(USERS (7) 指定哪个表空间参与排序操作,可以提高排序效率,B A(SYSEM B(TEMPORARY C(ROLLBACK D(USERS (8) 临时表空间中用于排序的段是何时创建的A A(排序操作开始的时候 B(临时表空间创建的时候 C(当排序操作需要内存操过1KB的时候。 D(上述所有选项。 (9) 以下哪个段是自管理的,B A(TEMPORARY B(ROLLBACK C(CACHE D(INDEX (10) 如果未定义临时表空间,哪一个会作为默认的临时表空间,D A(ROLLBACK B(USERS C(INDEX D(SYSTEM (11) 回滚段的作用是D A(数据的读一致性 B(事务回滚 C(数据库恢复 D(以上都是 (12) 回滚段存储A A(事务修改的数据原值 B(事务修改的数据新值 C(事务修改的数据原值和新值 D(以上都不是 第7章 数据库实例 (1) Oracle实例是D A(Oracle 内存结构 B(Oracle I/O 结构 C(Oracle 后台进程 D(以上都是 (2) SGA区包括D A(数据高速缓冲区 B(共享池 C(重做日志缓冲区 D(以上都是 (3) 最近使用过的SQL语句存储在B A(共享池 B(数据高速缓冲区 C(私有全局区 D(用户全局区 (4) 以下哪个不是Oracle后台服务进程,B A(DBWR B(DBCM C(LGWR D(SMON (5) 以下哪个是合法的Oracle后台服务进程,D A(ARCH B(LGWR C(DBWR D(以上都是 (6) 将修改过的数据块写入数据文件的进程是A A(DBWR B(LGWR C(PMON D(SMON (7) 已提交的事务所做的改变由哪个进程记录,D A(DBWR B(SMON C(CKPT D(以上都不是 (8) Oracle事务提交即B A(数据由DBWR进程写入磁盘文件 B(LGWR进程成功写入日志 C(PMON 进程提交 D(SMON 进程写数据 (9) 回收表空间碎片的进程是___________B A(PMON B(SMON C(DBWR D(ARCH (10) 管理用户会话连接的进程是______________A A(PMON B(SMON C(SERV D(NET8 第8章 数据库启动与关闭 (1) 实例启动时数据库所处的状态是C A(MOUNT B(OPEN C(NOMOUNT D(None (2) 数据库启动时,如果一个数据文件或日志文件不可用,会出现什么结果,B A(Oracle返回警告信息并打开数据库。 B(Oracle 返回警告信息,不打开数据库。 C(Oracle 返回警告信息,并进行数据库恢复。 D(Oracle忽略不可用的文件。 (3) 受限会话的系统权限应授予哪些用户,C A(在客户端与服务器之间通过SQL*NET 或NET8传输数据,需要特别安全保护的用户。 B(执行数据导入、导出的DBA用户。 C(上面两类用户都包括。 D(上面几项都不正确。 (4) 启动数据库时,如果一个或多个CONTROL_FILES参数指定的文件不存在或不可用, 会出现什么样的结果,A A(Oracle返回警告信息,但不加载数据库。 B(Oracle返回警告信息,并加载数据库。 C(Oracle忽略不可用的控制文件。 D(Oracle 返回警告信息,并进行数据库恢复。 (5) Bob试图正常关闭数据库,Oracle说实例处于空闲状态,他试图启动数据库,Oracle说 数据库已启动,Bob最好使用什么命令强制关闭数据库,B A(NORMAL B(ABORT C(IMMEDIATE D(NONE (6) Tom发出启动数据库的命令,实例和数据库经过怎样的过程最终打开,B A(OPEN, NOMOUNT, MOUNT B(NOMOUNT, MOUNT, OPEN C(NOMOUNT, OPEN, MOUNT D(MOUNT, OPEN, NOMOUNT (7) Diane是一个新DBA,当数据库服务器正在运行时她发出了关闭数据库的命令,等一会 儿,她发现Oracle正在等待所有用户主动断开,她使用的是哪一个关闭命令,A A( NORMAL B(ABORT C(IMMEDIATE D(NONE (8) 下面哪个脚本文件用于创建数据字典视图,B A(A(sql.bsq B(catalog.sql C(utlmontr.sql D(catproc.sql (9) 为了执行一次完整的数据库介质恢复操作,数据库必须处于那种状态,B A(处于Mount状态,并且使用RESETLOG方式打开数据库。 B(处于Mount状态,但不打开数据库。 C(处于Mount状态,并且使用 ARCHIVELOG方式打开数据库。 D( 不能执行完整的数据库介质恢复操作。 (10) 数据库启动过程中哪一步读取初始化参数文件,C A. 数据库打开 B. 数据库加载 C. 实例启动 D. 每个阶段 第9章 模式对象 (1) 用于删除约束的命令是哪一个,C A(ALTER TABLE MODIFY CONSTRAINT B(DROP CONSTRAINT C(ALTER TABLE DROP CONSTRAINT D(ALTER CONSTRAINT DROP (2) 哪个不是ROWID的组成部分,A A(表空间 B(文件编号 C(对象编号 D(块内行号 (3) 唯一值约束和主键约束的区别是什么,D A(唯一值约束建立唯一索引、主码约束建立非唯一索引 B(主码列可以为空、唯一值约束的列不可以为空 C(主码约束可以使用已有的索引、唯一值约束总是创建索引 D(唯一值约束的列可以为空、主码列不可以为空 (4) 什么是模式,B A(数据库对象的物理组织结构 B(数据库对象的逻辑组织结构 C(索引模式 D(以上都不是 (5) 位图索引适合建于怎样的列,B A(索引基数高 B(索引基数低 C(插入率高 D(修改率高 (6) 选择2个可以被PUBLIC用户组拥有的模式对象。AC A(数据库链接 B(回滚段 C(同义词 D(表 (7) ALTER TABLE命令不能用于B A(将一个表移动到其他的表空间中 B(修改表的初始分区大小 C(修改表名 D(禁用触发器 (8) 哪个约束不会自动建立索引,B A(主码 B(外码 C(唯一 (9) 哪个不是建立分区表的方法,C A(范围 B(列表 C(函数 D(散列 第10章 安全管理 (1) 创建用户命令中DEFAULT TABLESPACE子句指定_______的位置。A A. 用户创建的数据库对象 B. 用户创建的临时对象 C. 用户创建的系统对象 D. 以上都不是 (2) 资源文件中SESSIONS_PER_USER限制了什么,B A. 数据库的并发会话数量 B. 每用户会话数量 C. 每用户进程数量 D. 以上都不是 (3) 哪个参数限制用户在断开前的最大空闲时间,A A(IDLE_TIME B(DISCONNECT_TIME C(CONNECT_TIME D(以上都不是 (4) 使用ALTER USER命令时,以下哪个子句有错误,A A(ADD QUOTA 5M B(IDENTIFIED BY usera C(DEFAULT TABLESPACE SYSTEM D(以上都不是 (5) 哪个视图包含所有概要文件的资源使用参数,B A(DBA_PROFILE B(DBA_PROFILES C(DBA_USERS D(DBA_RESOURCES (6) 以下哪个不是系统权限,A A(SELECT B(UPDATE ANY C(CREATE VIEW D(CREATE SESSION (7) 创建用户的命令中哪个子句限制用户对象在数据库占用的空间,D A(Size B(NEXT_EXTENT C(MAX_EXTENTS D(QUOTA (8) 对表空间配额的分配限制了哪个操作,D A(UPDATE B(DELETE C(CREATE D(以上都是 (9) 概要文件不能限制________。D A(CPU 占用时间 B(最大数据库连接时间 C(最大会话空闲时间 D(读取数据块时间 (10) 以下哪个不是角色,D A(CONNECT B(DBA C(RESOURCE D(CREATE SESSION 第13章SQL语言基础 (1) 哪个单行函数能够得到字符串的一部分,B A(INSERT B(SUBSTR C(LPAD D(LEAST (2) 哪个函数接受任何类型的参数,可以多选。BD A(SUBSTR B(NVL C(ROUND D(DECODE E(SIGN (3) SIGN(ABS(NVL(-23,0)))的返回值是A A(1 B(32 C(-1 D(0 E(NULL (4) 哪个函数能返回字符串的首字符,选择2个。BC A(LTRIM B(SUBSTR C(RTRIM D(INSERT E(MOD (5) 哪行代码有错误,C A(SELECT dname,ename B(FROM emp e,dept d C(WHERE emp.deptno=dept.deptno D(ORDER BY 1,2 (6) 哪个语句不会建立隐式事务,E A(INSERT B(UPDATE C(DELETE D(SELECT FOR UPDATE E(以上语句都会建立隐式事务 (7) 以下查询语句是哪种连接,B SELECT dname,ename FROM dept d,emp e WHERE d.deptno=e.deptno ORDER BY dname,ename; A(自连接 B(等值连接 C(外连接 D(不等值连接 (8) 使用多表查询时,在哪个子句指定多个表的名字,D A(HAVING B(GROUP BY C(WHERE D(FROM (9) 如果查询表A(有3行数据)和表B(有4行数据),使用select * from a,b,返回的查询结 果有多少行,D A(7 B(1 C(0 D(12 (10) 你需要把NEW_CUST表中的新客户信息导入CUST和CUST_SPECIAL表,如果客户 信誉度大于10000,需要导入CUST_SPECIAL表,所有新客户信息都要导入CUST表, 使用哪种技术可以尽快完成导入,C A(外部表 B( MERGE 命令 C(INSERT多表插入命令 D(带有 WITH CHECK OPTION子句的INSERT命令 (11) 关于以下SQL语句的作用正确的说法是D ALTER TABLE hr.emp SET UNUSED (mgr_id); A(EMP表上的同义词需要被重建 B(MGR_ID列上的约束都被取消 C(任何包含MGR_ID列的视图都必须删除和重建 D(MGR_ID列的索引仍然有效直到执行DROP UNUSED COLUMNS命令 (12) 什么情况下在GROUP BY子句中使用ROLLUP,A A(对每组进行横向统计和不分组统计 B(对GROUP BY指定的列进行分组智能统计 C(对GROUP BY指定的列从右到左分组统计 D(对GROUP BY指定的列进行横向和纵向分组统计 (13) 关于子查询以下哪两种说法是正确的,BD A( 外层查询返回结果之后,执行内层查询 B( 先执行子查询,再执行外层查询 C( 对于子查询返回的结果,外层查询只执行一次 D( 外层查询返回的每行结果都与内层查询结果进行比较 (14) OE和SCOTT是数据库用户,ORDERS表被OE所拥有。DBA执行以下操作会导致: A CREATE ROLE r1; GRANT SELECT, INSERT ON oe.orders TO r1; GRANT r1 TO scott; GRANT SELECT ON oe.orders TO scott; REVOKE SELECT ON oe.orders FROM scott; A( SCOTT能查询OE.ORDERS; B( SCOTT不能查询OE.ORDERS; C( REVOKE命令回收了SCOTT和R1的SELECT权限; D( REVOKE命令会发生错误,因为SELECT权限已被授予R1。 第15章PL/SQL命名对象 (1)在SQL*Plus环境中,删除触发器trg_emp的命令是__________A A(DROP TRIGGER trg_emp B(DELETE TRIGGER trg_emp C(REMOVE TRIGGER trg_emp D(ALTER TRIGGER trg_emp REMOVE (2)关于触发器哪句是正确的,B A(DELETE语句触发应用触发器; B(INSERT语句触发数据库触发器 C(UPDATE语句触发系统触发器 D(SELECT语句触发INSTEAD OF触发器 (3)关于触发器,哪三句是正确的,ACD A(触发器是一个PL/SQL块、C或Java编写的过程,与表、视图、模式或数据库相关联。 B(当特定的事件发生时,触发器需要被显式地触发。 C(当特定的事件发生时,触发器隐式地执行。 D(当发生数据操纵事件(如DML事件)或系统事件(如登录数据库、关闭数据库)时,触发器被触发。 E(建立在模式上的触发器被所有用户的任意事件触发;建立在数据库上的触发器被特定用户的任意事件触发。 (4)关于包的重载哪两种说法是正确的,AE A(只有局部子程序或者包中定义的子程序可以重载 B(函数名相同、仅返回值类型不同可以对它们进行重载 C(名称、参数个数、类型、顺序都相同的子程序可以重载 D(名称相同、参数个数或类型相同的子程序可以重载 E(子程序名相同、参数个数、类型或顺序不同可以重载 (5)下面关于包的描述正确的是,D A(包可以嵌套。 B(可以向包传递参数。 C(包在每次调用是加载到内存中。 D(包可以被多个应用共享。 6)下面关于包的描述正确的是,CE ( A(包规范和包体都是包的必需组成部分。 B(包规范是可选的,但包体是必需的。 C(包规范是必需的,但包体是可选的。 D(在数据库中,包规范和包体存储在一起。 E(在数据库中,包规范和包体是分开存储的。 (7)EMP表上有一个行级前触发器,触发器中包含一条对EMP表的查询语句,确保工 资的值在岗位最高工资和最低工资之间,当修改EMP表中的工资时,会发生什么,C A(触发器成功执行 B(没有触发,因为它由行级AFTER UPDATE事件触发 C(触发器执行失败,因为对正在执行UPDATE操作的表进行SELECT操作是不允 许的 D(触发器执行失败,因为不能在BEFORE UPDATE触发器中使用MIN、MAX函 数 (8)数据库触发器的哪一部分决定触发器体执行的次数,A A(触发器类型 B(触发器体 C(触发事件 D(触发时间 (9)有一个函数CALCTAX CREATE OR REPLACE FUNCTION calctax (sal NUMBER) RETURN NUMBER IS BEGIN RETURN (sal * 0.05); END; 在SQL*PLUS环境执行该函数的正确方法是E A(执行命令 CALCTAX(1000);. B(执行命令EXECUTE FUNCTION calctax;. C(建立SQL*Plus环境变量X,执行命令 :X := CALCTAX(1000);. D(建立SQL*Plus环境变量X,执行命令 EXECUTE:X := CALCTAX;. E(建立SQL*Plus环境变量X,执行命令 EXECUTE:X := CALCTAX(1000); (10)如果执行语句SELECT…FOR UPDATE则必须A A(在事务结束时执行COMMIT或ROLLBACK,即使没有数据改变 B(修改选择的数据,然后提交或回滚以结束事务 C(在事务结束时执行COMMIT或ROLLBACK,只有当数据改变的情况下 D(没有数据改变就不存在事务,所以不必执行COMMIT或ROLLBACK 第17章 备份与恢复 用户错误发生的两个原因是(选择二个)AD A. 错误数据被提交 B. 操作系统错误 C. 权限不足 D. 表被错误截断 E. 应用文件被误删除 F. 应用程序遇到寻址异常 (1) 错误日志中包括哪种数据库备份活动的信息,B A. 数据文件开始、结束备份状态 B. 表空间开始、结束备份状态 C. 数据库备份状态由打开到关闭 D. 对数据库的文件进行操作系统备份 (2) 在哪种情况下必须对只读表空间进行回滚,(选二种)CD A. 恢复可读写的表空间; B. 恢复控制文件中所没有的表空间; C. 恢复只读表空间,在上次备份时也为只读; D. 恢复可读写的表空间,在上次备份时为只读; E. 恢复只读表空间,在上次备份时为可读写。 (3) 一个表空间由于错误而不可用,数据库工作在非存档模式,管理员应如何使数据库可 用,B A(进行数据库恢复 B(进行数据库完全恢复 C(用之前的数据库完全备份还原数据文件、重做日志文件和控制文件 D(无法使数据库可用 (4) 为什么不建议使用手动归档,C A(需要额外的磁盘资源 B(需要更多的后台进程 C(管理员需要发出SQL命令归档联机日志文件 D(需要编写操作系统脚本以拷贝联机日志文件 (5) 数据库处于存档模式,可进行哪三种类型的备份,(选三项)AB A(热备份 B(数据库关闭后使用操作系统进行备份 C(使用ALTER CONTROLFILE BACKUP 命令备份联机控制文件 D(使用 ALTER DATABASE BACKUP TABLESPACE命令备份联机表空间 E(使用ALTER DATABASE BACKUP CONTROLFILE命令备份联机控制文件 (6) 启动数据库时,你发现一个非活动未归档的日志组不可用,你可以执行以下哪些命令D A(RECOVER REDOLOG GROUP 1; B(RECOVER DATABASE UNTIL CANCEL; C(ALTER DATABASE RECOVER REDOLOG; D(ALTER DATABASE CLEAR UNARCHIEVED LOGFILE GROUP 1; E(RECOVER DATABASE UNTIL TIME ‘1999-09-15:11:23:00’; (7) 在进行关闭数据库的备份之前,哪三个命令可用于关闭数据库,BCD A(SHUTDOWN ABORT. B(SHUTDOWN NORMAL. C(SHUTDOWN IMMEDIATE. D(SHUTDOWN TRANSACTIONAL. (8) 关于联机备份,哪项说明是错的,C A(数据库可以被所有用户访问 B(数据库必须运行在归档模式下 C(数据库可以打开,但只能处于只读状态 D(表空间置于备份状态 (9) 当使用备份控制文件时,管理员需要做什么,D A(没有特定要求 B(在 RECOVER命令中使用UNTIL CANCEL 子句 C(在 RECOVER命令中使用 USING BACKUP CONTROLFILE 子句 D(恢复数据库之前发出 RECOVER CONTROLFILE命令 F(start the database in the NOARCHIVELOG mode 参考答案 第1章Oracle数据库概述 1(简答题 (1)数据是描述事物的符号,是数据库中存储的基本对象。在计算机中,用记录的形式来描述数据。数据与数据的解释即数据的语义是紧密结合的。数据库是指按一定的数据模型组织、描述和存储的数据的集合。数据库管理系统是位于操作系统与用户之间的一层数据管理软件。数据库系统是指数据库、数据库管理系统与计算机系统的结合。通常,在不引起混淆的情况下将数据库系统简称为数据 库。 (2)数据库管理系统的主要功能包括:数据定义、数据操纵、数据库运行与控制、数据库建立与维护、数据字典定义以及数据通信等。数据库管理系统的内部分多个层次,由应用层、语言定义及其翻译处理层、数据存取层、数据存储层、操作系统以及数据库组成。 (3)数据库系统由数据库、操作系统、数据库管理系统、开发工具、应用系统、数据库管理员以及数据库用户组成。 )概念模型是用简单、清晰、用户易于理解的概念来描述现实世界具体事物(4 及事物之间的关系。它是现实世界到信息世界的抽象,是数据库人员进行数据库设计的工具,与具体的数据库管理系统无关。 组织数据模型是从数据组织方式的角度来描述信息,它决定了数据在数据库中的组织结构。 (5)E-R图由3个要素组成:实体、联系与属性。实体之间的联系有1:1、1:n、n:n三种类型。 (6)Oracle之所以得到广大用户的青睐,其主要原因在于:支持多用户、大事务量的事务处理、提供标准操作接口、实施安全性控制和完整性控制、支持分布式数据处理、具有可移值性、可兼容性和可连接性。 ) (7 目前市场上常见的关系数据库管理系统包括Oracle、DB2、Sybase和SQL Server等。 Oracle是当今最大的数据库厂商Oracle公司的数据库产品。它是世界上第一个商品化的关系型数据库管理系统,也是第一个推出与数据库结合的第四代语言开发工具的数据库产品。 DB2是IBM公司于1983年推出的一个商业化关系数据库管理系统,它是基于System R基础上实现的。可以运行在各种不同的操作系统平台上,如UNIX,VMS,Windows,OS/2等。 Sybase可以运行在不同的操作系统平台上,如UNIX,VMS,Windows,Netware等。作为网络数据库,Sybase采用开放的体系结构,支持网络环境下各节点数据库的互相访问。 Microsoft SQL Server是微软公司推出的应用于Windows操作系统上的关系数据库产品。Microsoft SQL Server是Microsoft公司从Sybase公司购买技术而开发的产品,与Sybase数据库完全兼容,它支持客户机/服务器结构。 (8) 基于Oracle数据库的应用系统结构主要分为客户机/服务器结构、浏览器/服务器结构以及分布式数据库系统结构等。 (9) 关系的完整性约束包括三类:实体完整性、参照完整性和用户定义完整性。 实体完整性:是指关系中必须定义主键,以惟一的确定一个元组。主键由一个或多个属性构成,其取值惟一且不能为空(NULL)。 参照完整性:在关系模型中,通过外键来表示表之间的联系。参照完整性是指一个表中的外键的取值必须是参照表中主键存在的值或为空(NULL)。例如,学生信息表中“班号”属性为外键,其取值必须是班级信息表中“班号”属性的某一个值或为空。 用户定义完整性:是指用户根据特定应用情况,设定一些约束,反映某一具 体应用所涉及的数据必须满足的语义要求。例如,“性别”属性的域为“男、女”。 (10) Oracle9i作为Oracle公司一代软件平台的舰旗产品,被业界称为Oracle有史以来“最重大的软件工程”,对以前版本的数据库性能进行改进的同时,增加了很多新的功能:系统管理、数据库可靠性、数据库可扩展性、数据库性能和数据库安全性等。此外,Oracle9i中还引入了很多新的特性,如实现连续的数据可用性、自助错误更正、端到端的安全体系结构、可管理性等。 库特性:Oracle10g是第一个为网格计算设计的关系数据库,Oracle10g数据 其中的g是指网格(grid)。Oracle10g提供了企业网格计算所需要的集群、工作负载和数据中心自动化等,提高了系统的管理性能和服务质量。为了支持网格计算,Oracle10g在增强Oracle9i性能的同时,又增加了一些新的特性,包括网格计算、数据库自动化、数据库自我调整、真正集群技术、高可用性、超大型数据库支持、分布式事务处理等。 2(实训题 (1)E-R图如下: 出生教研教研办公员工性别系号系名人数姓名住址日期室号室名室号号 n11n有有系教研室教师 11教授 有成绩n n n1mn有学习班级学生课程 课程课程出生学分人数姓名性别班号学号号名日期 (2)E-R图如下: 出生 系日期 教师性别姓名号 职称教师 1 教授 成绩 1 mn学习学生课程 班级 课程课程系学分姓名性别学号年龄号名 关系模式如下: 教师(教师号,姓名,性别,出生日期,系,职称,课程号) 课程(课程号,课程名,学分) 学生(学号,姓名,性别,年龄,班级,系) 学习(学号,课程号,成绩) 第2章数据库服务器的安装与卸载 1(简答题 (1) 在安装数据库服务器之前需要进行如下准备: ?启动操作系统,并以Administrator身份登录。 ?检查计算机名称、检查源文件完整路径,如果包含中文字符则需要修改为不含中文字符。 ?检查服务器系统是否满足软硬件要求。 ?对服务器进行正确网络配置。 ?如果服务器上运行其它Oracle服务,必须在安装前将它们全部停止。 ?如果服务器上运行有以前版本的Oracle数据库,则必须对其数据进行备份。 ?决定数据库的创建方式。 (2) 企业版数据库服务器包含所有的数据库组件,主要针对高端的应用环境,适用于安全性和性能要求较高的联机事务处理(OLTP)、查询密集型的数据仓库和要求较高的Internet应用程序:标准版数据库服务器提供大部分核心的数据库功能和特性,适合于工作组或部门级的应用程序:个人版数据库服务器只提供基本数据库管理功能和特性,适合单用户的开发环境,为用户提供开发测试平台。 (3) 常用数据库类型包括事务处理类、数据仓库类以通用类型。其中事务处理类 型主要针对具有大量并发用户连接,并且用户主要执行简单事务处理的应用环境。事务处理数据库的典型应用有银行系统数据库、Internet电子商务数据库、证券交易系统数据库等。对于需要较高的可用性和事务处理性能、存在大量用户并行访问相同数据以及需要较高恢复性能的数据库环境,事务处理类型的配置可以提供最佳性能;数据仓库类型的数据库主要针对有大量的对某个主题进行复杂查询的应用环境。数据仓库的典型应用有客户订单研究、支持呼叫、销售预测、采购模式以及其他战略性业务问题的历史数据研究。对于需要对大量数据进行快速访问,以及复杂查询的数据库环境,数据仓库类型配置是最佳选择;通用类型配置的数据库是事务处理数据库与数据仓库配置的折衷。既可以支持大量并发用户的事务处理,又可以快速对大量历史数据进行复杂的数据扫描和处理。 (4)略 (5)以SYSDBA身份登录的用户具有创建数据库启动或关闭数据库与实例、使用ALTER DATABASE 执行打开、备份数据库等变更操作、对数据库进行归档或恢复、受限状态下连接数据库以及创建服务器端初始化参数文件等权限。以SYSOPER身份登录的用户具有启动或关闭数据库与实例、使用ALTER DATABASE 执行打开、备份数据库等变更操作、对数据库进行归档或恢复、受限状态下连接数据库以及创建服务器端初始化参数文件等权限。 (6)在本地数据库服务器系统中,以SYSDBA身份登录数据库服务器然后重新设定SYS或SYSTEM用户的口令。 (7)卸载数据库服务器软件的步骤为: 停止所有Oracle相关的服务 ? ?卸载Oracle9i数据库服务器组件 ?删除注册表中Oracle目录、服务以及事件日志 ?删除Oracle环境变量 ?删除TEMP目录下Oracle相关的文件夹 ?检查“开始”菜单中是否还有Oracle菜单,如果有,则将其删除 ?删除Windows系统安装磁盘中的Program Files\Oracle 目录 ?删除Oracle安装目录 (8)参考(2)题。 (9) OFA是Oracle组织文件以及文件命名的一套规则。例如对应存放安装软件的目录,在Oracle相关服务中都包含主目录名称等。 (10)略 2(实训题 (3) 打开网络管理对话框,分别选中左侧树状结构中的监听器和数据库,修改右侧对话框中的主机名为当前的计算机名。 第3章创建数据库 1(简答题 (1)创建数据库方法有两种:使用数据库配置助手(DBCA)创建数据库或运行脚本手工创建数据库。DBCA(Database Configuration Assistant)是Oracle提供的用于创建数据库的图形界面工具,内置数据库模板,可以直观快速地创建数据库。可在Oracle9i数据库服务安装时自动启动,或在需要创建数据库时单独启动。该创建方式比较适合于初学者。手动创建数据库方式比DBCA方式具有更 大的灵活性和效率,但需要用户对Oracle9i数据库的创建语法和参数有深入了解,适合有经验的DBA。 (2)创建数据库的模板包括“数据仓库”、“通用”、“事务处理”、“自定义”四 种,其中“数据仓库”用于创建数据量大、数据变化小,用户少,用户数据和决策支持。“事务处理”类型数据库主要用户联机处理,用户多,数据不断变化。“通用”类型数据库是集前两者的优点,具有通用性;“自定义”是用户自己 选择安装组件和参数设置。 (3)创建数据库之前应该做好规划、检查系统资源情况以及决定数据库的创建方式。 (4)手动创建数据库通常包含如下的操作步骤: ? 确定新建数据库名称与实例名称; ? 确数据库管理员的认证方式; ? 创建初始化参数文件; ? 创建实例; ? 连接并启动实例; ? 使用CREATE DATABASE语句创建数据库; ? 创建附加的表空间; 运行脚本创建数据字典视图 ? (5) CREATE DATABASE语句中参数含义为: 参 数 名 称 说 明 MAXINSTANCES 指定同一时刻数据库允许被多少个 实例装载和打开 MAXLOGHISTORY 可以自动归档的最大日志文件的数 量 MAXLOGFILES 最大日志文件组数量 MAXLOGMEMBERS 每个日志文件组中最大成员日志文 件数量 MAXDATAFILES 数据库中所允许创建的最多数据文 件数量 ARCHIVELOG 新建数据库处于归档模式 NOARCHIVELOG 新建数据库处于非归档模式 CONTROLFILE 按初始化参数文件中 REUSE CONTROL_FILES的值创建控制文 件; 如果同名文件存在则覆盖 LOGFILE 指定重做日志文件组及组成员日志 文件名称 DATAFILE 为SYSTEM表空间创建的一个或多 个数据文件的名称和位置 UNDO 创建撤销表空间,并为撤销表空间 TABLESPACE 指定文件名称和为值 DEFAULT 创建临时表空间 TEMPORARY TABLESPACE CHARACTER SET 指定使用的数据库字符集 NATIONAL 指定国家字符集 CHARACTER SET AUTOEXTEND 指定数据文件的自动扩展 (6) 文本初始化参数文件是一个本地的初始化参数文件,而服务器初始化参数文件是一个放在数据库服务器端的共享的二进制初始化参数文件。文本参数文件的修改是通过直接对文本的修改实现的,通过命令行是无法将修改后的参数值写入该文件中,而服务器初始化参数文件是不能直接修改的,必须通过ALTER SYSTEM语句来进行参数修改的。 (7) 使用ALTER SYSTEM修改参数时应注意SCOPE的取值。 SCOPE 子 句 说 明 SCOPE=SPFILE 对参数的修改仅记录在服务器初始化参数文件 中,对动态参数和静态参数都适用,修改后的参数 在下一次数据库启动时生效。 SCOPE=MEMORY 对参数的修改仅记录在内存中,只适合动态参数 的修改,修改后立即生效。由于修改结果并不会保 存到服务器初始化参数文件中,因此下一次启动数 据库实例时仍然采用修改前的参数设置 SCOPE=BOTH 对参数的修改同时保存到服务器初始化参数文件 和内存中,只适合对动态参数的修改,更改后立即 生效,并且下一次启动数据库实例时将使用修改后 的参数设置。当执行ALTER SYSTEM语句时,如 果没有指定SCOPE子句,那么Oracle默认地将 SCOPE设置为BOTH (8) 以通过以下方法查看初始化参数的设置情况。 ?SHOW PARAMETERS命令 ?查询数据字典V$PARAMETER或V$PARAMETER2或V$SPPARAMETER ?将服务器初始参数文件转换为文本出示参数文件。 第4章Oracle 企业管理器 1(简答题 (1) 第一层由客户端控制台(Console)和集成工具组成,为数据库管理员提供一个可视化的图形管理界面。管理员利用该图形界面可以进行数据库的管理操作,包括任务定制、对象管理等。管理操作命令传送到第二层的Oracle管理服务器进行处理。第二层由一个或多个OMS组成,是OEM体系结构的核心。它提供了一个集中化的智能管理环境,在控制台和目标节点之间传递信息,将从控制台接收的信息处理后发送到目标节点,同时将目标节点的执行结果返回给控制台。第三层由安装了智能代理(Oracle Intelligent Agent)程序的目标节点组成,执行由OMS发送过来的任务。 (2)首先启动相应的Oracle服务,然后启动OEM,登录到相应数据库后进行数据库的管理。如果进行复杂的管理操作,需要首先配置OMS,然后登录到OMS方式进行数据库的管理操作。 (3)独立启动OEM可以进行数据库的简单管理操作,而要管理除数据库外的其他类型的目标、在多个OMS管理员之间共享管理数据、从Web浏览器中运行控制台、自动提示系统存在的潜在问题、自动重复管理任务等需要采用登录到OMS方式进行。 (4)通常以独立方式运行控制台时不需要连接到OMS,因此也没有必要创建OMS所需要的资料档案库。但是,如果要在独立方式启动的OEM控制台中运行一些特殊的OEM集成工具,包括Change Manager、Oracle Expert、Oracle SQL Analyze、Oracle Index Tuning Wizard和Oracle Tablespace Manager,则需要为控制台创建一个独立的资料档案库,以存储这些工具在运行时所需要的管理数据。 独立资料档案库与OMS所使用的资料档案库是不一样的,明显不同之处是独立资料档案库只能由一个用户使用,而OMS所使用的资料档案库可以同时被多个用户共享。 (5)使用多个OMS可以均衡载荷、实现信息共享。使用时需要注意每个OMS必须使用一个资料档案库,但一个资料档案库可以被多个OMS使用。 ) 在OEM中没有出现目标节点,其原因可能是该节点上的没有运行智能代(6 理服务,或是该节点已关闭,也可能是网络故障导致连接失败; 2(实训题(略) 第5章 SQL*PLUS 1(简答题 (1) 在SQL*PLUS中可以执行的数据库管理管理包括:输入、编辑、存储、提取、运行和调试SQL语句和PL/SQL程序;处理数据、生成报表、存储、打印、格式化查询结果;列出任何表的列的定义;在数据库之间存取和拷贝数据;从一个用户端发送和接受消息等。 (2) 保存文件的方法为:SAVE filename 读取文件的方法为:GET filename (3) CONN[ECT]:连接数据库 DISC[ONNECT]:断开连接 SAVE:保存文件 GET:读入文件 START:执行文件 SHOW:显示环境变量值 SET:设置环境变量值 DESCRIBE:查看对象结构 CLEAR:清空缓冲区 COLUMN:设置格式输出 (4) 常用的格式控制命令包括: COLUMN TTITLE BTITLE REPHEADER REPFOOTER ) (5 可以在SQL*PLUS环境中定义绑定变量或定义替换变量,用户与程序的交互。 第6章物理存储结构 1(简答题 (1) Oracle数据库体系结构由物理存储结构、逻辑存储结构和实例组成。其中物理存储结构描述了操作系统层次数据的存储与管理,包括数据文件、日志文件、重做日志文件等组成。逻辑结构描述了数据库内部数据的组织与管理,由表空间、段、区、块组成。实例是数据库运行的软件结构,由内存结构和后台进程组成。数据库运行过程中,用户的操作在内存区中进行,最终通过后台进行转化为对数据库的操作。 (2) Oracle数据库物理结构包括数据文件、控制文件、重做日志文件、初始化参数文件、归档文件、口令文件等。在控制文件中记录了当前数据库所有的数据文件的名称与位置、重做日志文件的名称与位置,以及数据文件、重做日志文件的状态等。 (3) 数据文件中保存了数据库中的所有数据,包括数据字典以及用户数据。 (4) 控制文件保存数据库的物理结构信息,包括数据库名称、数据文件的名称与状态、重做日志文件的名称与状态等。在数据库启动时,数据库实例依赖初始化参数定位控制文件,然后根据控制文件的信息加载数据文件和重做日志文件,最后打开数据文件和重做日志文件。 (5) 重做日志文件是以重做记录的形式记录、保存用户对数据库所进行的修改操作,包括用户执行DDL、DML语句的操作。如果用户只对数据库进行查询操作,那么查询信息是不会记录到重做日志文件中的。 (6) 归档是数据库恢复及热备份的基础。只用当数据库归档模式时,才可以进行热备份和完全恢复。进行归档设置包括归档模式设置(ARCHIVELOG)、归档方式设置以及归档路径的设置等。 (7) 每个数据库至少需要两个重做日志文件,采用循环写的方式进行工作。当一个重做日志文件在进行归档时,还有另一个重做日志文件可用。当一个重做日志文件被写满后,后台进程LGWR开始写入下一个重做日志文件,即日志切换,同时产生一个“日志序列号”,并将这个号码分配给即将开始使用的重做日志文件。当所有的日志文件都写满后,LGWR进程再重新写入第一个日志文件。 (8) 数据库的物理结构尽量分散到不同磁盘空间,既有利于数据库的安全性,也 有利于提供系统的性能,如并发行等。 (9) 采用多路复用控制文件可以避免由于一个控制文件的损坏而导致数据库无 法正常启动。在数据库启动时根据一个控制文件打开数据库,在数据库运行时多 路复用控制文件采用镜像的方式进行写操作,保持所有控制文件的同步。 (10) 可以通过V$DATAFILE、V$CONTROLFILE、V$LOGFILE、V$LOG等数 据字典可以查询相应的物理结构信息。 第7章逻辑存储结构 1(简答题 (1) 说明数据库逻辑存储结构的组成和相互关系。 Oracle9i数据库的逻辑存储结构分为数据块、区、段和表空间四种。其中, 数据块是数据库中的最小I/O单元,由若干个连续的数据块组成的区是数据库中 最小的存储分配单元,由若干个区形成的段是相同类型数据的存储分配区域,由 若干个段形成的表空间是最大的逻辑存储单元,所有的表空间构成一个数据库。 (2) 说明数据库表空间的种类,以及不同类型表空间的作用。 数据库表空间分为系统表空间和非系统表空间两类,其中非系统表空间包括 撤销表空间、临时表空间和用户表空间等。 SYSTEM表空间主要用于存储数据库的数据字典、PL/SQL程序的源代码和 解释代码、数据库对象的定义。撤销表空间专门进行回退信息的自动管理。临时 表空间是专门进行临时段管理的表空间。用户表空间用于分离不同应用的数据, 而且能够减少读取数据文件时产生的I/O冲突。 (3) 说明数据库、表空间、数据文件以及数据库对象之间的关系。 一个数据库由一个或多个表空间构成,不同的表空间用于存放不同应用的数 据,表空间的大小决定了数据库的大小。一个表空间对应一个或多个数据文件, 数据文件的大小决定了表空间的大小。一个数据文件只能从属于一个表空间。一 个数据库对象只能存储在一个表空间中,但可以存储在该表空间所对应的一个或 多个数据文件中。 (4) 数据库表空间的管理方式有几种,各有什么特点, 数据库表空间的管理方式有两种:字典管理方式和本地管理方式。在字典管 理方式下,表空间使用数据字典来管理存储空间的分配,当进行区的分配与回收 时,Oracle将对数据字典中的相关基础表进行更新,同时会产生回退信息和重做 信息。在本地管理方式中,区的分配和管理信息都存储在表空间的数据文件中, 而与数据字典无关。 (5) 表空间管理时应考虑哪些问题, 表空间管理时,应该遵循以下原则: , 将数据字典与用户数据分离; , 将回退数据与用户数据分离; , 将表空间的数据文件分散保存到不同的硬盘上; , 为不同的应用创建独立的表空间。 (6) 利用手动管理方式,如何有效管理数据块的使用, DBA可以利用手动管理方式,通过为段设置PCTFREE和PCTUSED两个参 数来控制数据块中空闲空间的使用。 (7) 数据库中常用的段有哪几种,分别起什么作用, 根据存储对象类型不同,可以分为数据段、索引段、临时段和回退段四类。数据段用来存储表或簇的数据。索引段用来存放索引信息,包括ROWID和索引键值。临时段用来保存SQL语句在解释和执行过程中所产生的临时数据。回退段用于保存数据修改之前的信息,包括数据修改前的值及其位置,即记录数据库中所有事务修改之前信息的段。 8) 说明回退段的作用,以及回退段的管理方式。 ( 利用回退段中保存的信息,可以实现事务回滚、数据库恢复和数据的读一致性。回退段的管理有两种方式,即自动撤销管理和手动撤销管理。 (9) 说明数据库存储空间中碎片产生的原因以及如何回收碎片。 略。 (10) 说明在创建数据库时如何合理规划数据库的物理存储结构和逻辑存储结构。 略。 2(实训题 (1)使用SQL命令创建一个本地管理方式下的自动分区管理的表空间USERTBS1,其对应的数据文件大小为20MB。 create tablespace USERTBS1 datafile 'd:\oracle\oradata\orcl\usertbs1.dbf' size 50M extent management local autoallocate; (2)使用SQL命令创建一个本地管理方式下的表空间USERTBS2,要求每个分区大小为512KB。 create tablespace USERTBS2 datafile 'd:\oracle\oradata\orcl\usertbs2.dbf' size 50M extent management local uniform size 512K; (3)修改USERTBS1表空间的大小,将该表空间的数据文件修改为自动扩展方式,最大值为100MB。 alter database datafile 'd:\oracle\oradata\orcl\usertbs1.dbf' autoextend on next 5M maxsize 100M; (4) 为USERTBS2表空间添加一个数据文件,以改变该表空间的大小。 alter tablespace USERTBS2 add datafile 'd:\oracle\oradata\orcl\usertbs2a.dbf' size 50M; (5) 使用SQL命令创建一个本地管理方式下的临时表空间TEMPTBS,并将该表空间作为当前数据库实例的默认临时表空间。 create temporary tablespace TEMPTBS tempfile 'd:\oracle\oradata\orcl\temptbs.dbf' size 20M extent management local uniform size 16K; (6)使用SQL命令对USERTBS1表空间进行联机和脱机状态转换。 alter tablespace USERTBS1 offline; alter tablespace USERTBS1 online; (7)创建一个回退表空间UNDOTBS,并作为数据库的撤销表空间。 create undo tablespace UNDOTBS datafile 'd:\oracle\oradata\orcl\undotbs.dbf' size 20M; alter system set UNDO_MANAGEMENT=AUTO,UNDO_TABLESPACE=UNDOTBS scope=both; )删除表空间USERTBS2,同时删除该表空间的内容以及对应的操作系统文(8 件。 drop tablespace USERTBS2 including contents and datafiles; (9)为USERTBS1表空间创建一个回退段,其中回退段的最优大小设置为2MB。 create rollback segment undoseg tablespace USERTBS1 storage (initial 100K next 100K optimal 2MB minextents 20 maxextent 100); (10)查询当前数据库中所有的表空间及其对应的数据文件信息。 select tablespace_name,file_name from dba_data_files; 3(选择题 C C B A C A B A B D D A 第8章 数据库实例与操作模式 1(简答题 (1) 数据库实例是数据库系统的软件结构,由内存结构与后台进程组成,处于用户与物理数据库之间,实现对数据库的操作。 (2) SGA区由数据缓冲区、共享池、重做日志缓冲区、大型池、JAVA池构成;PGA区由排序区、私有SQL区以及堆栈构成。SGA区是由Oracle分配的共享内存结构,包含一个数据库实例共享的数据和控制信息。当多个用户同时连接同一个实例时,SGA区数据供多个用户共享,所以SGA区又称为共享全局区。用户对数据库的各种操作主要在SGA区中进行。该内存区随数据库实例的创建而分配,随实例的终止而释放。PGA区是在用户进程连接数据库,创建一个会话时,由Oracle为用户分配的内存区域,保存当前用户私有的数据和控制信息,因此该区又称为私有全局区。每个服务器进程只能访问自己的PGA区,所有服务器进程PGA区总和即为实例的PGA区的大小。 (3) 数据高速缓冲区存储的是最近从数据文件中检索出来的数据,供所有用户共享。当用户要操作数据库中的数据时,先由服务器进程将数据从磁盘的数据文件读到数据高速缓冲区中,然后在缓冲区中进行处理。重做日志缓冲区用于缓存用户对数据库进行修改操作时生成的重做记录。共享池用于缓存最近执行过的SQL语句、PL/SQL程序和数据字典信息,是对SQL语句、PL/SQL程序进行语法分析、编译、执行的区域。 (4) Oracle数据库进程包括用户进程、服务器进程和后台进程三类。其中,用户进程用户建立用户数据库服务器的连接;服务器进程接受用户连接请求;后台进程实现数据库的后台操作。 (5) Oracle实例的主要后台进程包括数据库写进程(DBWR)、日志写进程(LGWR)、检查点进程(CKPT)、系统监控进程(SMON)、进程监控进程(PMON)、归档进程(ARCH)、恢复进程(RECO)、锁进程(LCKn)、调度进程(Dnnn)等。 DBWR进程负责把数据高速缓冲区中已经被修改过的数据(“脏”缓存块)成批写入数据文件中永久保存,同时使数据高速缓冲区有更多的空闲缓存块,保证服务器进程将所需要的数据从数据文件读取到数据高速缓冲区中,提高缓存命中率。 LGWR日志写入进程负责把重做日志缓冲区的重做记录写入重做日志文件中永久保存。 CKPT进程的作用就是执行检查点,更新控制文件与数据文件的头部,使其同步;,触发DBWR进程,将脏缓存块写入数据文件。 SMON进程的主要功能包括:在实例启动时负责对数据库进行恢复;回收不再使用的临时空间;将各个表空间的空闲碎片合并。 PMON进程的主要功能包括:负责恢复失败的用户进程或服务器进程,并且释放进程所占用的资源;清除非正常中断的用户进程留下的孤儿会话,回退未提交的事务,释放会话所占用的锁、SGA、PGA等资源;监控调度进程和服务器进程的状态,如果它们失败,则尝试重新启动它们,并释放它们所占用的各种资源。 ARCH进程用户归档重做日志文件。 RECO进程用户数据库恢复。 (6) 数据库写入进程负责把数据高速缓冲区中已经被修改过的数据(“脏”缓存块)成批写入数据文件中永久保存,同时使数据高速缓冲区有更多的空闲缓存块,保证服务器进程将所需要的数据从数据文件读取到数据高速缓冲区中,提高缓存命中率。 当下列某个条件满足时,DBWR进程将启动,将数据高速缓冲区中的脏数据写入数据文件。 , 服务器进程在数据高速缓存区中搜索一定数量的缓存块后,仍然没有找不到可用的空闲缓存块,此时DBWR进程将被启动。 , 检查点发生时,将启动DBWR进程。 , 当数据高速缓冲区中LRU列表长度达到初始化参数DB_BLOCK_WRITE_BATCH指定值的一半时,DBWR进程将被启动。 , DBWR进程发生超时(大约3秒),DBWR进程将被启动。 (7) 日志写入进程负责把重做日志缓冲区的重做记录写入重做日志文件中永久保存。 DBWR进程在工作之前,需要了解LGWR进程是否已经把相关的日志缓冲区中的重做记录写入重做日志文件中。如果还没有写入重做日志文件,DBWR进程将通知LGWR进程完成相应的工作,然后DBWR进程才开始写入。这样可以保证先将与脏缓存块相关的重做记录信息写入重做日志文件,然后将脏缓存块写入数据文件,即先写重做日志文件,后写数据文件。 当下列事件发生时,LGWR进程将重做日志缓冲区中的重做记录写入重做日志文件。 , 用户通过COMMIT语句提交当前事务。 , 重做日志缓冲区被写满三分之一。 , DBWR进程开始将脏缓存块写入数据文件。 LGWR进程超时(大约3秒),LGWR进程将启动。 (8) SMON进程的主要功能包括:在实例启动时负责对数据库进行恢复;回收不 再使用的临时空间;将各个表空间的空闲碎片合并。 PMON进程的主要功能包括:负责恢复失败的用户进程或服务器进程,并且释放 进程所占用的资源;清除非正常中断的用户进程留下的孤儿会话,回退未提交的 事务,释放会话所占用的锁、SGA、PGA等资源;监控调度进程和服务器进程的 状态,如果它们失败,则尝试重新启动它们,并释放它们所占用的各种资源。 (9) 在Oracle数据库中,数据库的操作模式分为专用服务器(DELICATED SERVER) 模式和多线程服务器(MULTITHREADED SERVER)模式两种。其中,在专用服务器模 式中为每个用户进程创建一个服务器进程,用户进程与服务器进程之间是1:1 的关系;在共享服务器模式中,一个服务器进程可以为多个用户进程服务器。 (10) 专用服务器模式工作过程 , 用户进程向一个数据库实例发出连接请求。 , 位于数据库服务器中的Oracle监听程序探测到用户进程请求后,首先验 证用户进程提供的用户名和口令,验证通过后建议一个专用的服务器进程为该用 户进程提供服务。 , 用户提交一条SQL语句。 , 专用服务器进程首先判断在共享SQL工作区中是否存在类似的SQL语句。 如果不存在,将为这条SQL语句分配新的共享SQL工作区,然后解析该语句。在 解析过程中,服务器进程将检查该语句的语法正确性。同时,该语句的私有数据 和信息保存到服务器进程的PGA中。 , 解析完成后,服务器进程开始在数据高速缓冲区中寻找SQL语句所要求的 数据。如果数据不在数据高速缓冲区中,还需要从数据文件中将所需要的数据读 取到数据高速缓冲区中。 , 服务器进程执行SQL语句。如果SQL语句要对数据进行更改,仅在数据高 速缓冲区中对缓存块进行更改,并将更改所生成的重做记录保存在重做日志缓存 中。将来,由LGWR进程将重做记录写入重做日志文件,由DBWR进程将脏缓存块 写入数据文件。 , 执行完毕后,服务器进程将结果返回给用户进程。 (11) 多线程服务器模式工作过程 , 在客户端创建一个用户进程,连接数据库。 , 位于服务器中的Oracle监听程序探测到用户进程请求后,首先验证用户 进程提供的用户名和口令,验证通过后将该用户进程分配给一个调度进程。用户 进程直接与调度进程进行交互。 , 用户提交一条SQL语句,调度进程对SQL语句进行处理,然后将处理结果 放入位于SGA区中的一个“请求队列”中,同时将调度程序ID也存入请求队列。 , 当某个共享服务器进程空闲时,从“请求队列”中取出一条处理后的SQL 语句,并对该语句进行解析和执行,得到它所请求的数据。 , 共享服务器进程将处理结果放入SGA区中的一个“响应队列”中。 , 调度程序定期检查“响应队列”,如果发现有自己送出请求的处理结果, 则将结果取出。调度程序根据处理结果中保存的调度程序ID来标识该结果是否 是自己的。 , 调度程序将处理结果返回给用户进程。 2(选择题 )D(2)D(3)B(4)B(5)D(6)A(7)D(8)B(9)B(10)A (1 第9章 数据库的启动与关闭 1(简答题 (1) 常用的数据库启动与关闭工具包括:SQL*PLUS、OEM、RMAN等。 (2) 数据库启动时首先根据初始化参数文件创建并启动实例,然后根据控制文件 加载数据文件和充作日志文件,最后打开数据文件和重做日志文件。 (3) 数据库关闭时首先关闭数据文件和重做日志文件,然后卸载数据文件和重做 日志文件,关闭控制文件,最后释放内存结构和后台进程,即关闭实例。 (4) 利用初始化参数文件中参数设置创建并启动实例; 利用控制文件中的信息定位并加载数据文件和重做日志文件。 重做日志文件用户在数据库运行过程中记录用户对数据库的修改操作。 (5) 数据库启动模式包括: , STARTUP NOMOUNT 用于创建一个新的数据库或重建数据库的控制文件。 , STARTUP MOUNT 用于重命名数据文件、添加、删除或重命名重做日志文件、改变数据库的归档模 式、执行数据库完全恢复操作等。 , STARTUP NORMAL 正常启动数据库 , STARTUP FORCE 在下列情况下,需要使用STARTUP FORCE命令启动数据库:无法使用 SHUTDOWN NORMAL,SHUTDOWN IMMEDIATE或SHUTDOWN TRANSACTION语句关闭数据库实例;在启动实例时出现无法恢复的错误。 , STARTUP RESTRICT 当执行下列操作时,需要使用STARTUP RESTRICT命令启动数据库:执行 数据库数据的导出或导入操作;执行数据装载操作;暂时阻止普通用户连接数据 库;进行数据库移植或升级操作等。 (6) 关闭数据库的方法包括: , SHUTDOWN [ NORMAL ] 如果对数据库的关闭没有时间限制,则可以采用该命令正常关闭数据库。 当采用SHUTDOWN NORAML方式关闭数据库时,Oracle将执行下列操作: , 阻止任何用户建立新的连接; , 等待当前所有正在连接的用户主动断开连接; , 一旦所有用户断开连接,则关闭数据库; , 数据库下次启动时不需要任何实例的恢复过程。 , SHUTDOWN IMMEDIATE 如果要求在尽可能短时间内关闭数据库,如即将启动数据库备份操作、即将 发生电力供应中断、数据库本身或某个数据库应用程序发生异常需要关闭数据库 等,都可以采用SHUTDOWN IMMEDIATE命令来立即关闭数据库。 当采用SHUTDOWN IMMEDIATE方式关闭数据库时,Oracle将执行下列操 作: , 阻止任何用户建立新的连接,也不允许当前连接用户启动任何新的事务; , 回滚所有当前未提交的事务; , 终止所有用户的连接,直接关闭数据库; , 数据库下一次启动时不需要任何实例的恢复过程。 , SHUTDOWN TRANSACTION 如果要求在尽量短的时间内关闭数据库,同时还要保证所有当前活动事务可 以提交,则可以采用SHUTDOWN TRANSACTION命令关闭数据。 当采用SHUTDOWN TRANSACTION方式关闭数据库时,Oracle将执行下 列操作: , 阻止所有用户建立新的连接,也不允许当前连接用户启动任何新的事 务; , 等待用户回滚或提交任何当前未提交的事务,然后立即断开用户连接; , 关闭数据库; , 数据库下一次启动时不需要任何实例的恢复过程。 , SHUTDOWN ABORT 如果前三种方法都无法成功关闭数据库,说明数据库产生了严重错误,只能 采用终止方式,即SHUTDOWN ABORT命令来关闭数据库,此时会丢失一部分 数据信息,对数据库完整性造成损害。 当采用SHUTDOWN ABORT方式关闭数据库时,Oracle将执行下列操作: , 阻止任何用户建立新的连接,同时阻止当前连接用户开始任何新的事 务。 , 立即结束当前正在执行的SQL语句。 , 任何未提交的事务不被回滚。 , 中断所有的用户连接,立即关闭数据库。 , 数据库实例重启后需要恢复。 (7) STARTUP NOMOUNT可用完成的管理操作包括: 用于创建一个新的数据库、重建数据库的控制文件等。 STARTUP MOUNT可以完成的管理操作包括: 用于重命名数据文件、添加、删除或重命名重做日志文件、改变数据库的归档模 式、执行数据库完全恢复操作等。 (8) 如果需要数据库处于OPNE模式下执行维护任务,而同时要保证其他用户 不能在数据库中建立连接和执行操作,此时应该使用STARTUP RESTRICT命令 启动数据库。 当执行下列操作时,需要使用STARTUP RESTRICT命令启动数据库。 , 执行数据库数据的导出或导入操作 , 执行数据装载操作 , 暂时阻止普通用户连接数据库 , 进行数据库移植或升级操作 ) (9 所谓的静默状态是指只允许DBA用户在数据库中进行操作,而其他所有用 户都不能进行数据库的访问。DBA在进行数据库的管理与维护,执行某些特殊 操作时,需要排除其他用户对数据库的操作。例如,DBA在执行某些操作的程 中,如果有其他用户访问操作的对象,将导致管理操作失败;DBA的某些操作 在执行过程中所产生的中间结果不应当被其他用户看到。 当数据库处于挂起状态时,数据库所有的物理文件的I/O操作都被暂停。但 是与静默状态不同,挂起状态不禁止非DBA用户进行数据库操作,只是暂时停 止所有用户的I/O操作 (10) 数据库启动时首先从默认位置读取服务器端初始化参数文件,如果没有,则 读取默认位置的文本初始化参数文件;如果还没有则可以通过PFILE参数指定 文本初始化参数文件文件。 复习题 第10章 1(简答题 (1) 数据库模式与用户之间的区别在于:用户是数据库的使用者和管理者,用户 具有帐户状态、访问权限和操作权限等属性。模式是一系列逻辑数据结构或对象 的集合,是数据库中对象的组织和管理单位。 (2) 在Oracle 数据库中,根据表生存周期不同,可以分为永久性表和临时表; 根据表中数据组织方式不同,可以分为标准表、索引化表和分区表。索引化表是 一种特殊的表,它按B树的结构来组织和存储数据,将表的数据和索引的数据 存储在一起。分区表是将一个表分成若干个独立的组成部分进行存储和管理。 (3) 表的约束包括: , 主键约束:定义了主键约束的列取值不能为空,也不能重复。 , 唯一值约束:定义了唯一值约束的列取值不能重复。 , 检查约束:定义了检查约束的列取值要满足检查条件。 , 外键约束:定义了外键约束的列取值要么是主表参照列的值,要么是空 值。 , 空,非空约束:定义了非空约束的列取值不能为空。 (4) 索引用于提高数据的查询效率。根据索引值是否唯一,可以分为唯一性索引 和非唯一性索引;根据索引的组织结构不同,可以分为平衡树索引和位图索引; 根据索引基于的列数不同可以分为单列索引和复合索引。 (5) 索引化表将按索引的结构组织表中的数据,整条记录都被保存在索引条目 中。要启用溢出存储功能,必须在创建索引化表时使用OVERFLOW子句指定溢 出部分的存储空间,同时使用PCTTHRESHOLD子句或INCLUDING子句来设 置溢出方式。 (6) 所谓分区是指将一个巨型表或巨型索引分成若干个独立的组成部分进行存 储和管理,每一个小的、可以独立管理的部分,称为原来表或索引的分区。对巨 型表进行分区后,即可以对整个表进行操作,也可以针对特定的分区进行操作, 从而简化了对表的管理和维护。 (7) 对表进行分区的方法包括: , 范围分区:按照分区值的范围对表进行分区。 , 列表分区:按照分区值对表进行分区。 , 散列分区:采用HASH算法在指定数量的分区中均等地分配数据。 , 复合分区:先对表进行范围分区,然后对每个分区进行散列分区。 (8) , 簇是一种存储表数据的方法,一个簇由共享相同数据块的一组表组成。 在一个簇中,Oracle将多个表中具有相同相关列的记录聚簇在相同的数据块中。 对于经常访问这些列的应用来说,能够减少磁盘I/O时间,改善连接查询的效率。 , 视图是从一个或多个表或视图中提取出来的数据的一种表现形式。在数 据库中只有视图的定义,而没有实际对应“表”的存在。通过视图的使用可以提 高数据的安全性,隐藏数据的复杂性,简化查询语句,分离应用程序与基础表, 保存复杂查询等。 , 序列是用于产生唯一序列号的数据库对象,可以为多个数据库用户依次 生成不重复的连续整数,通常使用序列自动生成表中的主键值。 , 同义词是数据库中表、索引、视图或其他模式对象的一个别名。利用同 义词,一方面可以为数据库对象提供一定的安全性保障;另一方面可以简化对象 访问。此外,当数据库对象改变时,只需要修改同义词而不需要修改应用程序。 , 数据库链接是在分布式数据库应用环境中的一个数据库与另一个数据库 之间的通信途径,将远程数据库映射到本地。所有能够访问本地数据库链接的应 用程序均可访问远程数据库中的模式对象。 (9) 在数据库中使用索引可以提高对表中数据的查询速度,但是,向表中插入数 据需要更新索引,会影响更新速度。如果表建了索引,在有条件查询时,系统先 对索引表进行查询,利用索引表可以找到相应记录的ROWID。索引建好后,由 系统负责更新。 (10) 数据库中临时表分为事务级别的临时表和会话级别的临时表。创建表有三种 方法: 定义表名、列名、类型与约束等直接创建表;利用子查询间接创建表。 第11章 安全管理 1(简答题 (1) Oracle数据库的安全机制包括:用户管理、权限管理、角色管理、表空间设 置和配额管理、用户资源限制以及数据库审计等。 (2) Oracle提供了3种用户认证机制,即数据库身份认证、外部身份认证和全局 身份认证。只有通过认证的用户才能访问数据库。 (3) Oracle数据库中权限有两类,系统权限和对象权限。系统权限是指在数据库 级别执行某种操作的权限,或针对某一类对象执行某种操作的权限。对象权限是 指对某个特定的数据库对象执行某种操作的权限。例如,对特定表的插入、删除、 修改、查询的权限。 (4) 在Oracle数据库中,将权限授予用户有2种方法:直接授权,利用GRANT 命令直接为用户授权;间接授权,先将权限授予角色,然后再将角色授予用户。 (5) Oracle数据库中角色分为系统预定义的角色和用户自定义的角色两类。角色 是一系列权限的集合,可以先将权限授予角色,然后将角色授予具有相同权限的 用户。 (6) 系统权限授予与回收时不需要指定权限的所有者,因为系统权限是数据库级 别的权限;而对象权限的授予与回收需要指定权限所依附的数据库对象。 (7) Oracle数据库概要文件主要用来限制用户的数据库及系统资源的使用以及 管理用户口令策略。 (8) 常用的系统权限包括:CREATE TABLE、CREATE VIEW、CREATE SESSION、CREATE ANY TABLE、CREATE USER等;常用的对象权限包括: SELECT、UPDATE、DELETE、INSERT、ALTER等;常用角色包括:CONNECT、 DBA、RESOURCE、EXP_FULL_DATABASE、IMP_FULL_DATABASE (9)数据库概要文件资源控制参数包括: , CPU_PER_SESSION :限制用户在一次会话期间可以占占的CPU 占占占占,单位为百分之一秒。当达到该时间限制后,用户就不能在会话中执行 任何操作了,必须断开连接,然后重新建立连接。 , CPU_PER_CALL:限制每个调用可以占占的CPU 占占占占,单位为百分之 一秒。当一个SQL语句执行时间达到该限制后,该语句以错误信息结束。 , CONNECT_TIME:限制每占占占可占占占占时间占,单位为分钟。当数据 库连接持续时间超出该设置时,连接被断开。 , IDLE_TIME:限制每占占占占占连续占占占占占占时间占,单位为分钟占当会 话空闲时间超过该设置时,连接将被断开。 , SESSIONS_PER_USER:限制占占占占打开数据库会话占占占占占。 , LOGICAL_READS_PER_SESSION:占占占占占占占占数据块的最大数量, 包括从内存中读取的数据块和从磁盘中读取的数据块的总和。 , LOGICAL_READS_PER_CALL :占占占占占占读取占占占占占占占占占,包 括从内存中读取的数据块和从磁盘中读取的数据块的总和。 , PRIVATE_SGA:在共享服务器操作模式中,执行SQL语句或PL/SQL 程序时,Oracle将在SGA中创建私有SQL区。该参数限制在SGA中占占占占占占占 私有SQL区的占占占占 , COMPOSITE_LIMIT :称为“综合资源限制”,是占占用户会话可以消耗 占占占占限额占该参数由CPU_PER_SESSION、 LOGICAL_READS_PER_SESSION、 PRIVATE_SGA、 CONNECT_TIME几个 参数综合决定。 (10)概要文件中的口令管理参数包括: , FAILED_LOGIN_ATTEMPTS:该参数限制用户在登录Oracle数据库时 允许失败的次数。一个用户尝试登录数据库的次数达到该值时,该用户的账户将 被锁定,只有解锁后才可以使用。 , PASSWORD_LOCK_TIME:该参数用于设定当用户登录失败后,用户账 户被锁定的时间长度。 , PASSWORD_LIFE_TIME:该参数用于设置用户口令有效天数。达到限 制的天数后,该口令将过期,需要设置口令。 , PASSWORD_GRACE_TIME:用于设定在PASSWORD_LIFE_TIME过期 后一个天数。在这几天中,用户将接收到一个关于口令过期需要修改口令的警告。 当达到的天数后,原口令过期。 , PASSWORD_REUSE_MAX:该参数用于占占一个用户口令被修改后,必 须经过多少天后才可以重新使用该口令。 , PASSWORD_REUSE_TIME:该参数用于指定一个口令被重新使用前, 必须经过多少次修改。 , PASSWORD_VERIFY_FUNCTION:设置口令占占占占占占占。这个函数会 对口令进行校验,以判断口令是否符合最低复杂程度或其他校验规则。 第12章 备份与恢复 1(简述题 (1) 什么是备份,什么是恢复, 备份和恢复是两个相互联系的概念,备份是将数据信息保存起来,以防意外 事件发生,恢复则是当意外事件发生或某种需要时,将已备份的数据信息还原到 数据库系统中的过程。 (2) 为什么要对数据库进行备份, 数据备份目的是为了防止数据丢失。 (3) 数据库备份的原则有哪些, , 建议将日志文件归档到磁盘上,以后再拷贝到磁带上。注意,归档日志文 件不应该与数据文件或联机重做日志文件存放在同一个磁盘上。 , 应该使用单独的磁盘保存数据文件的备份拷贝。 , 应该保持控制文件的多个拷贝,且控制文件的拷贝应该存放在不同磁盘控 制器下的不同磁盘设备上。 , 联机日志文件应该为多个,每个组至少应该保持两个成员。(这可以在创 建数据库的时候,设定最大的日志文件个数不小于2;也可以在数据库创建完成 以后增加新的日志文件。)同一日志组的多个成员不应该存放在同一个磁盘上。 , 保持归档重做日志文件的多个拷贝。建议在磁盘和磁带上都保留备份拷 贝。(可以修改初始化参数文件,设置自动双向归档日志文件。) , 在磁盘上保存最近最小的备份和最新的归档重做日志文件,可以简化和加 速某些恢复过程。 , 当增加、重命名、删除日志文件或数据文件的时候,会改变数据库结构, 此时应该对控制文件进行备份。 , 若企业有多个Oracle数据库,则应该使用具有恢复目录的Oracle恢复管 理器。 (4) 什么是物理备份, 物理备份就是在操作系统层面上复制物理文件,包括数据文件、控制文件和 归档重做日志文件、初始化参数文件等(通常不包括联机重做日志文件,因为在 归档模式下,Oracle自动对联机日志文件进行归档;在非归档模式下,备份所 有的文件都处于一致性状态,不需要对它们应用重做日志)。 (5) 什么是逻辑备份, 逻辑备份是用EXPORT导出二进制文件,可以在实例之间移动指定的数据或 在不同的系统结构、操作系统版本或Oracle版本之间移动数据。 (6) 物理备份和逻辑备份的主要区别是什么,分别适用于什么情况, 物理备份就是在操作系统层面上复制物理文件,逻辑备份是在数据库中用 EXPORT导出二进制文件。物理备份主要为了防止操作系统级的数据库组件丢失, 逻辑备份主要用于在实例之间移动指定的数据或在不同的系统结构、操作系统版 本或Oracle版本之间移动数据。 (7) 物理备份又分为哪两种,这两种备份分别在什么情况下使用, 物理备份分为冷备份与热备份。冷备份又称为脱机备份,是在数据库保持关 闭状态下进行的备份。热备份又称为联机备份或者归档备份,是在数据库保持开 放状态下对数据库进行备份。 (8) Oracle数据库的不完全恢复有哪些类型, 基于CANCEL的恢复,基于时间的恢复,基于SCN(SYSTEM CHANGE NUMBER) 的恢复。 (9) Oracle数据库的逻辑备份和恢复方法有哪些, Oracle逻辑备份可以通过EXP/IMP命令实现,也可以利用过OEM管理器中 的导出/导入工具来实现。 (10) 使用OMS进行导出和导入操作之前,首先需要进行哪些准备工作, 需要首先配置资料档案库,并设置首选身份证明。 第13章 网络管理 1(简答题 (1)简述Oracle网络服务组件的构成。 Oracle网络服务组件由Oracle Net、Oracle Net监听器和Oracle连接管理器 构成。 (2)简述监听器的基本工作原理。 当客户端连接请求到达监听器之后,监听器为客户端选择服务处理器,并将 连接请求交给服务处理器。 (3)Oracle提供的网络配置工具有哪些。 图形化用户界面方式的Oracle Net Configuration Assistant、Oracle Net Manager和命令行方式下的LSNRCTL。 (4)Oracle数据库服务器具有哪些不同类型的服务处理器,它们分别采用的什 么样的监听器响应方式, 调度器和专用服务进程。其中调度器的监听器响应方式:Direct Hand Off响 应方式和重定向响应方式两种;专用服务进程的监听器响应方式:Spawn and Bequeath响应方式和重定向方式两种。 (5)监听器的配置包括哪几个方面的内容, 监听器配置主要包括监听器所监听的地址的配置、监听器所支持的数据 库服务信息的配置和监听器的运行控制参数配置。 (6)使用哪些命令可以监视监听器的运行状态以及检查监听器日志文件, 在LSNRCTL命令环境下输入命令STATUS或SERVICES。 (7)客户端网络配置主要完成的任务是什么, 客户端网络配置的主要任务就是为客户端选择所使用的命名方式,并且建立 所需的连接标识符到连接描述符的映射关系。 (8)本地命名方式和主机命名方式各自的优缺点,适用的场合,对其进行配置 需要哪几个步骤, ?i本地命名服务具有如下优点: , 它提供了一种更为直接的名称解析方式,不依赖于人和其他服务。 , 对网络协议基本上没有限制,可以使用所有Oracle所支持的网络协议。 , 可以利用图形界面工具方便地进行配置。 ii本地命名方式是最为常用的一种命名方式。 iii本地命名方式的配置主要包括如下步骤: , 配置本地命名方式为首选项。 , 配置网络服务名 , 分发配置文件 , 连接到数据库 ?i主机命名方式具有如下优点: , 主机命名方式只需要最少的用户配置文件; , 主机命名方式不需要使用本地名称配置文件; , 用户在使用主机命名方式设置时,可以不需要理解连接标识符、连接描 述符等基本概念。 对应地,主机命名方式也具有如下局限: , 客户端只能使用TCP/IP协议进行连接; , 客户端必须具有至少一种IP地址解析机制,比如DNS,或者是本地 TCP/IP hosts文件; , 不能使用Oracle 网络服务中的高级功能,比如Oracle连接管理器所提供 的功能; , 对监听器的配置有特定的要求。 ii在连接需求十分简单的环境中,可以使用主机命名方式来代替本地命名 方式。 iii主机命名方式的配置主要步骤为: , 配置监听器监听全局数据库名 , 配置主机命名方式为首选方式 , 建立主机名称解析环境 , 连接到数据库 (9)完成本地命名方式的配置,并且建立了网络服务名后,连接数据库服务器 的命令格式, SQL>CONNECT username/password@net_services_name 其中net_services_name就是新建的网络服务名,即连接标识符,比如: SQL>CONNECT scott/tiger@neusoft (10)配置主机命名方式的过程中,建立主机名称解析环境,需要修改哪一个系 统文件,具体修改方式及测试方式, ?假设目标数据库服务器的全局数据库名为DUJUAN,数据库服务器的主机名为wangdujuan,IP地址为172.23.5.57,那么需要打开位于C:\WINDOWS\system32\drivers\etc目录中的hosts文件,对它进行如下修改: #IP address of server host name alias 127.0.0.1 localhost 172.23.5.57 wangdujuan dujuan ?保存对hosts文件所作的修改后,可以利用PING命令来测试名称解析的配 置是否正确。 2(实训题 (1) 试通过Oracle Net Configuration Assistant创建名称为LISTENER_TEST的TCP协议的监听程序,要求该监听程序的监听端口为1525。 参考教材256页。 (2) 试通过Oracle Net Manager向LISTENER_TEST监听程序中添加数据库服务ORCL。 参考教材259页。 (3) 试为LISTENER_TEST监听程序设置操作口令“neusoft”。 参考教材261页。 (4) 查看LISTENER_TEST监听程序的当前运行状态及注册的数据库服务。 参考教材262页。 (5) 对客户端进行网络配置,将本地命名方式设置为首选命名方式,并配置新的网络服务名TEST,使其通过LISTENER_TEST监听程序访问目标数据库服务器ORCL。 参考教材264页。 (6) 修改网络服务名TEST,使其通过默认的监听程序访问目标数据库服务器ORCL。 参考教材257页,在监听程序对话框中选择“重新配置”,然后点击“下一步”按钮,在监听器程序名对话框中选择默认的监听程序名(在1521端口监)。 (7) 测试网络服务名TEST是否可用。 参考教材266页,在服务明配置对话框中选择“测试”项,点击“下一步”按钮进行测试。 (8) 对客户端进行网络配置,将主机命名方式设置为首选命名方式,并建立相应的主机名称解析环境。 参考教材265页和271页。 (9) 测试(8)题中建立的主机名称解析的配置是否正确,并建立到数据库服务 器的连接。 参考教材271页。 3(选择题 (1)A(2)C、E(3)A、B(4)A(5)A(6)C(7)D 第14章 SQL语言基础 1((1) [[SQL> create table book( 2 no char(8) primary key, 3 title varchar2(50) not null, 4 author varchar2(20), 5 publish varchar(20), 6 pub_date date, 7 price number(6,2) 8 ); 表已创建。 SQL> create table reader( 2 rno char(6) primary key, 3 rname varchar2(20) not null 4 ); 表已创建。 SQL> create table borrow( 2 no char(8), 3 rno char(6), 4 borrow_date date default sysdate, 5 primary key(no,rno), 6 foreign key (no) references book(no), 7 foreign key (rno) references reader(rno) 8 ); 表已创建。 SQL> INSERT INTO BOOK VALUES('100001','Oracle9i数据库系统管理','李代平','冶金工业出版社',TO_DATE('20 03-01-01','YYYY-MM-DD'),38); SQL> INSERT INTO BOOK VALUES('100002','Oracle9i中文版入门与提高','赵松涛', 2 '人民邮电出版社',TO_DATE('2002-07-01','YYYY-MM-DD'),35) 3 ; SQL> INSERT INTO BOOK VALUES('100003','Oracle9i开发指南:PL/SQL程序设计', 2 'Joan Casteel','电子工业出版社 ',TO_DATE('2004-04-03','YYYY-MM-DD'),49); SQL> INSERT INTO BOOK VALUES('100004','数据库原理辅助与提高','盛定宇', 2 '电子工业出版社',TO_DATE('2004-03-01','YYYY-MM-DD'),34); SQL> INSERT INTO BOOK VALUES('100005','Oracle9i中文版实用培训教程','赵 伯山', 2 '电子工业出版社',TO_DATE('2002-01-01','YYYY-MM-DD'),21); SQL> INSERT INTO BOOK VALUES('100006','Oracle8实用教程','翁正科等', 2 '电子工业出版社',TO_DATE('2003-07-08','YYYY-MM-DD'),38); SQL> INSERT INTO READER VALUES('200001','张三'); SQL> INSERT INTO READER VALUES('200002','李凤'); SQL> INSERT INTO READER VALUES('200003','孟欣'); SQL> INSERT INTO READER VALUES('200004','谢非'); SQL> INSERT INTO READER VALUES('200005','刘英'); SQL> INSERT INTO BORROW VALUES('100001','200001', 2 TO_DATE('2004-08-10 10:06:14','YYYY-MM-DD HH:MI:SS')); SQL> INSERT INTO BORROW VALUES('100002','200002', 2 TO_DATE('2004-08-10 10:06:27','YYYY-MM-DD HH:MI:SS')); SQL> INSERT INTO BORROW VALUES('100003','200003', 2 TO_DATE('2004-08-10 10:06:36','YYYY-MM-DD HH:MI:SS')); SQL> INSERT INTO BORROW VALUES('100004','200004', 2 TO_DATE('2004-08-10 10:06:48','YYYY-MM-DD HH:MI:SS')); SQL> INSERT INTO BORROW VALUES('100005','200005', 2 TO_DATE('2004-08-10 10:06:58','YYYY-MM-DD HH:MI:SS')); SQL> SELECT NO,TITLE,AUTHOR FROM BOOK WHERE PUBLISH='电子工业 出版社'; NO TITLE AUTHOR -------- -------------------------------------------------- -------------------- 100003 Oracle9i开发指南:PL/SQL程序设计 Joan Casteel 100004 数据库原理辅助与提高 盛定宇 100005 Oracle9i中文版实用培训教程 赵伯山 100006 Oracle8实用教程 翁正科等 SQL> UPDATE BOOK SET PRICE=29 WHERE NO='10007'; SQL> INSERT INTO BOOK VALUES('100007','Java网络编成','李程等', 2 '电子工业出版社',TO_DATE('2000-08-01','YYYY-MM-DD'),35); SQL> UPDATE BOOK SET PRICE=29 WHERE NO='100007'; SQL> DELETE FROM BOOK WHERE NO='100007'; SQL> conn system/aaa as sysdba 已连接。 SQL> alter user scott identified by tiger account unlock; SQL> conn scott/tiger; SQL> select * from emp; ]] INSERT INTO BOOK VALUES('100001','冶金工业出版社','李代平', '冶金工业出版社',TO_DATE('2003-01-01','YYYY-MM-DD'),38); INSERT INTO BOOK VALUES('100002','Oracle9i中文版入门与提高','赵松涛', '人民邮电出版社',TO_DATE('2002-07-01','YYYY-MM-DD'),35); INSERT INTO BOOK VALUES('100003','Oracle9i开发指南:PL/SQL程序设计', 'Joan Casteel','电子工业出版社',TO_DATE('2004-04-03','YYYY-MM-DD'),49); INSERT INTO BOOK VALUES('100004','数据库原理辅助与提高','盛定宇', '电子工业出版社',TO_DATE('2004-03-01','YYYY-MM-DD'),34); INSERT INTO BOOK VALUES('100005','Oracle9i中文版实用培训教程','赵伯山', '电子工业出版社',TO_DATE('2002-01-01','YYYY-MM-DD'),21); INSERT INTO BOOK VALUES('100006','Oracle8实用教程','翁正科等', '电子工业出版社',TO_DATE('2003-07-08','YYYY-MM-DD'),38); INSERT INTO READER VALUES('200001','张三'); INSERT INTO READER VALUES('200002','李凤'); INSERT INTO READER VALUES('200003','孟欣'); INSERT INTO READER VALUES('200004','谢非'); INSERT INTO READER VALUES('200005','刘英'); INSERT INTO BORROW VALUES('100001','200001', TO_DATE('2004-08-10 10:06:14','YYYY-MM-DD HH:MI:SS')); INSERT INTO BORROW VALUES('100002','200002', TO_DATE('2004-08-10 10:06:27','YYYY-MM-DD HH:MI:SS')); INSERT INTO BORROW VALUES('100003','200003', TO_DATE('2004-08-10 10:06:36','YYYY-MM-DD HH:MI:SS')); INSERT INTO BORROW VALUES('100004','200004', TO_DATE('2004-08-10 10:06:48','YYYY-MM-DD HH:MI:SS')); INSERT INTO BORROW VALUES('100005','200005', TO_DATE('2004-08-10 10:06:58','YYYY-MM-DD HH:MI:SS')); (2) ?SELECT NO,TITLE FROM BOOK; ?SELECT NO,TITLE,AUTHOR FROM BOOK WHERE PUBLISH='电子工业出 版社' ?SELECT * FROM BOOK WHERE PRICE>40; ?SELECT PUBLISH,COUNT(*) FROM BOOK GROUP BY PUBLISH; ?SELECT * FROM BOOK WHERE AUTHOR LIKE '赵%' ?SELECT RNAME,TITLE,BORROW_DATE FROM BOOK,READER,BORROW WHERE BOOK.NO=BORROW.NO AND READER.RNO=BORROW.RNO; ?INSERT INTO BOOK VALUES('10000007','Java网络编成','李程等', '电子工业出版社',TO_DATE('2000-08-01','YYYY-MM-DD'),35); ?UPDATE BOOK SET PRICE=29 WHERE NO='100007'; ?DELETE FROM BOOK WHERE NO='10000007' ?SELECT BOOK.NO,TITLE,RNAME FROM BOOK,READER,BORROW WHERE BOOK.NO=BORROW.NO AND READER.RNO=BORROW.RNO; 2( 根据Oracle数据库scott模式下的emp表和dept表,完成下列操作。 1查询20号部门的所有员工信息。 Select * from emp where deptno=20; 2查询所有工种为CLERK的员工的员工号、员工名和部门号。 Select empno,ename,deptno from emp where job=’CLERK’; 3查询奖金(COMM)高于公子(SAL)的员工信息。 Select * from emp where comm>sal; 4查询奖金高于工资的20%的员工信息。 Select * from emp where comm.>sal*0.2; 5查询10号部门中工种为Manager和,,号部门中工种为CLERK的员工信息。 Select * from emp where (job=’Manager’and deptno=10) or (job=’CLERK’and deptno=20) 6查询所有工种不是Manager和CLERK,且工资大于或等于2000的员工的详细 信息。 Select * from emp where (job!= 'MANAGER' or job= 'CLERK') and sal>=2000 7查询有奖金的员工的不同工种。 Select job from emp where comm.>0 group by job 8查询所有员工工资与奖金的和。 Select ename,sal+nvl(comm,0) from emp 9查询没有奖金或奖金低于100的员工信息。 Select * from emp where (comm is null) or comm< 100 10查询各月倒数第二天入职的员工信息。 select ename,hiredate from emp where last_day(hiredate)-hiredate=1 11查询工龄大于或等于10年的员工信息。 select * from emp where months_between(sysdate,hiredate)/25/12>=1 12查询员工信息,要求以首字母大写的方式显示所有员工的姓名。 select initcap(ename) from emp 13查询员工名正好为6个字符的员工的信息。 select ename from emp where length(ename)=6 14查询员工名字中不包含字母“S”的员工。 Select * from emp where ename not like '%S%' 15查询员工姓名的第二个字母为“M”的员工信息。 Select * from emp where ename like '_M%' 16查询所有员工姓名的前三个字符 Select substr(ename,1,3) from emp; 17查询所有员工的姓名,如果包含字母s,则用“S”代替。 Select replace(ename,'s','S') from emp 18查询员工的姓名个和入职日期,并按入职日期从先到后进行排序。 Select ename,hiredate from emp order by hiredate 19显示所有员工的姓名、工种、工资和奖金,按工种降序排序,若工种相同则 按工资升序排序。 Select ename,job,sal,comm from emp order by job desc,sal 20显示所有员工的姓名、入职的年份和月份,按入职日期所在的月份排序,若 月份相同则按入职的年份排序。 select ename,to_char(hiredate,'yyyy') year,to_char(hiredate,'mm') month from emp 21查询在2月份入职的员工信息 Select * from emp where to_char(hiredate,'mm')=2 查询所有员工入职以来的工作年限,用**年**月**日的形式表示。 Select ename, (trunc((sysdate-hiredate)/365)|| '年 '||trunc(mod((sysdate-hiredate),365)/30)||'月' ||Trunc(mod(mod((sysdate-hiredate),365),30))||'日') days from emp; 22查询至少有一个员工的部门信息。 Select * from dept where deptno in(select deptno from emp) 23查询工资比SMITH员工工资高的所有员工信息。 Select * from dept where deptno in(select deptno from emp where ename='SMITH') 24查询所有员工的姓名及其直接上级的姓名。 Select a.ename,b.ename from emp a, emp b where a.mgr=b.empno 25查询入职日期早于其直接领导的所有员工的信息。 select a.*,b.* from emp a,emp b where a.mgr=b.empno and a.hiredate2500 30查询平均工资低于2000的部门及其员工信息。 select a.*,b.* from emp a,dept b where a.deptno in( select deptno from emp having avg(sal)<2000 group by deptno) and a.deptno=b.deptno 31查询在SALES部门工作的员工的姓名信息。 select ename from emp where deptno=(select deptno from dept where dname='SALES') 32查询工资高于公司平均工资的所有员工信息。 select * from emp where sal >(select avg(sal)from emp) 33查询与SMITH员工从事相同工作的所有员工信息。 select * from emp where job=(select job from emp where ename='SMITH') 34列出工资等于30号部门中某个员工工资的所有员工的姓名和工资。 select ename,sal from emp where sal in(select sal from emp where deptno=30) 35查询工资高于30号部门中工作的所有员工的工资的员工姓名和工资。 select ename,sal from emp where sal >all(select sal from emp where deptno=30) 36查询每个部门中的员工数量、平均工资和平均工作年限。 select count(*),avg(sal),avg(sysdate-hiredate) from emp group by deptno 查询从事同一种工作但不属于同一部门的员工信息。 select worker.ename,worker.empno,worker.sal,manager.ename,manager.empno,manager.sal from emp worker left join emp manager on worker.mgr=manager.empno 37查询各个部门的详细信息以及部门人数、部门平均工资。 select a.*,b.* from dept a,(select deptno,count(*),avg(sal) from emp group by deptno) b where a.deptno=b.deptno 查询各种工作的最低工资。 select job,min(sal) from emp group by job 38查询各个部门中不同工种的最高工资。 select deptno,job,max(sal) from emp group by deptno,job 39查询10号部门员工及其领导的信息。 方法一:select a.*,b.* from emp a,emp b where a.mgr=b.empno and a.deptno=10 Select worker.ename,worker.empno,worker.sal,manager.ename,manager.empno,manager.sal from emp worker,emp manager where worker.mgr=manager.empno and worker.deptno=10 查询各个部门的人数及其平均工资。 select count(*) ,avg(sal) from emp group by deptno 40查询工资为某个部门平均工资的员工信息。 select * from emp where sal = any(select avg(sal) from emp group by deptno) 41查询工资高于本部门平均工资的员工的信息。 select * from emp e where e.sal > (select avg(sal) from emp where deptno=e.deptno) 42查询工资高于本部门平均工资的员工的信息及其部门的平均工资。 select e.* ,(select avg(sal) from emp where deptno=e.deptno) from emp e where sal>(select avg(sal) from emp where deptno=e.deptno) select e.ename,e.empno,e.sal,e.deptno,s.avgsal from emp e,(select deptno ,avg(sal) avgsal from emp group by deptno) s where e.sal>s.avgsal and e.deptno=s.deptno 43查询工资高于20号部门某个员工工资的员工信息。 select * from emp sal>any(select sal from emp where deptno=20) 44统计各个工种的员工人数与平均工资。 select job,count(*),avg(sal) from emp group by job 45统计每个部门中各工种的人数与平均工资。 select deptno,job,count(*), avg(sal) from emp group by deptno,job 46查询工资、奖金与10号部门某员工工资、奖金都相同的员工信息。 select * from emp where (sal, nvl(comm.,0)) in (select sal,nvl(comm,0) from emp where deptno=10) 47查询部门人数大于5的部门的员工信息。 select * from emp where deptno in (select deptno from emp group by deptno having count(*)>5) 48查询所有员工工资都大于2000的部门的信息。 select * from dept where deptno not in (select deptno from emp where sal<2000) 49查询所有员工工资都大于2000的部门的信息及其员工信息。 select dept.deptno,dname,loc,ename,empno,sal from emp ,dept where emp.deptno=dept.deptno and deptno not in (select deptno from emp where sal<2000) 50查询所有员工工资都在2000?3000之间的部门的信息。 select * from dept where deptno not in (select deptno from emp where sal not between 2000 and 3000) 51查询所有工资在2000?3000之间的员工所在部门的员工的信息。 select * from emp where deptno in (select distinct deptno from emp where sal between 2000 and 3000) 查询每个员工的领导所在部门的信息。 select detp.deptno,dname,loc from dept, emp worker,emp manager where dept.deptno=manager.deptno and worker.mgr=manager.empno 52查询人数最多的部门信息。 select * from dept where deptno in (select deptno from emp group by deptno having count(*)>=all(select max(count(*)) from emp group by deptno)) 53查询30号部门中工资排序前3名的员工的信息。 54查询所有员工中工资排序在5?10之间的员工的信息。 查询SMITH员工及其所有直接、间接下属员工的信息。 查询SCOTT员工及其直接、间接上级员工的信息。 以树状结构查询所有员工与领导之间的层次关系。 55向emp中插入一条记录,员工号为1357,员工名为Oracle,工资为2050,部 门号为20,入职日期为2002年5月10日。 Insert into emp(empno,ename,sal,deptno,hiredate) values(1357,’oracle’,2050,20,TO_DATE(‘2002-5-10’,’YYYY-MM-DD’); 56向emp中插入一条记录,员工号为8000,员工名为FAN,其他信息与SMITH 员工的信息相同。 insert into emp(ename,empno,mgr,job,hirdate,sal, comm.,deptno) select ‘FAN’,8000,mgr,job,hirdate,sal,comm.,deptno from emp where ename=’SMITH’ 57将各个部门员工的工资修改为该员工所在部门平均工资加1000 update emp e set sal=1000+(select avg(sal) from emp where deptno=e.deptno) 3(选择题 (1)B (2)B、D (3)A (4)A、B (5)C (6)E (7)B (8)D (9)A、C (10)D 第15章PL/SQL程序设计 1(简答题 1) ( PL/SQL语言是Oracle数据库专用的一种高级程序设计语言,是对标准SQL 语言进行了过程化扩展的语言。具有如下特点: , 与SQL语言紧密集成,所有的SQL语句在PL/SQL中都得到支持; , 减小网络流量,提高应用程序的运行性能。 , 模块化的程序设计功能,提高系统可靠性。 , 服务器端程序设计,可移植性好。 (2) PL/SQL程序的基本单元是语句块,所有的PL/SQL程序都是由语句块构成 的,语句块之间可以相互嵌套,每个语句块完成特定的功能。 , 声明部分:以关键字DECLARE开始,BEGIN结束。主要用于声明变量、 常量、数据类型、游标、异常处理名称以及本地(局部)子程序定义等。 , 执行部分:是PL/SQL块的功能实现部分,以关键字BEGIN开始, EXCEPTION或END结束(如果PL/SQL块中没有异常处理部分,则以END结 束)。该部分通过变量赋值、流程控制、数据查询、数据操纵、数据定义、事务 控制、游标处理等实现块的功能。 , 异常处理部分:以关键字EXCEPTION开始,END结束。该部分用于处 理该块执行过程中产生的异常。 (3) PL/SQL程序中的选择结构有两种类型,分别为IF系列和CASE系列。循环 结构包括简单循环、WHILE循坏、FOR循环三种。 (4) 游标的作用是将数据库的中数据检索出来后缓存,可以被PL/SQL程序一行 一行的读取并处理。支持一条、多条、零条记录的处理。游标的基本操作步骤为 声明游标、打开游标、检索游标、关闭游标。 (5) Oracle中的命名块经过编译后可以存储在数据库服务器端,供用户从不同的 客户端调用。常用的命名块包括存储过程、函数、包和触发器。其中,过程用于 实现某特定操作;函数用户将运行结果返回给用户;包是一系列过程、函数、常 量等集合;触发器是特定的事件处理器,当特定的事件发生时,系统自动进行调 用执行。 (6) 触发器包括DML触发器、INSTEAD-OF触发器和系统触发器。其中,DML 触发器主要作用于表,其事件有INSERT、UPDATE、DELETE;INSTEAD-OF 触发器主要主用于视图,其事件有INSERT、UPDATE、DELETE;系统触发器 主要是DML事件和系统事件发生时调用的触发器,其中DML事件包括 CREATE、DROP、ALTER等,系统事件包括LOGON、LOGOFF、STARTUP、 SHUTDOWN、SERVERERROR等。 (7) DML触发器执行顺序为: , 如果存在,执行语句级前触发器。 , 对于受触发事件影响的每一个记录: , 如果存在,执行行级前触发器; , 执行当前记录的DML操作(触发事件); , 如果存在,执行行级后触发器。 , 如果存在,执行语句级后触发器。 (8) DML触发器中的语句级触发器是激发触发器的SQL语句不管涉及到多少记 录,触发器只执行一次,而行级触发器是激发触发器的SQL语句涉及到多少记 录,触发器就执行多少次。通常,如果要获取当前操作记录的信息,需要采用行 级触发器,而如果需要获取整个操作之前或操作之后的信息,可以采用语句级触 发器。 (9) 基于数据库的系统触发器是只要数据库中相应事件发生,触发器就执行,与 用户没有关系;而模式级别的触发器只有特定用户操作中的特定事件发生时触发 器才执行。 (10) PL/SQL命名块可以一次编译多次执行,可以放在服务器端由不同客户端用 户调用;而匿名块只能一次性执行,不能被其他用户调用。 2( 实训题 1.前两题: SQL> conn system/aaa as sysdba 已连接。 SQL> alter user scott identified by tiger account unlock; 用户已更改。 SQL> conn scott/tiger; 已连接。 SQL> declare 2 cursor c_emp is 3 select * from emp; 4 v_emp c_emp%rowtype; 5 begin 6 open c_emp;loop 7 fetch c_emp into v_emp; 8 exit when c_emp%notfound; 9 dbms_output.put_line(v_emp.ename||' '||v_emp.empno||' '||v_emp.deptno||' '||v_emp.sal); 10 end loop; 11 close c_emp; 12 end; 13 / PL/SQL 过程已成功完成。 SQL> set serveroutput on SQL> declare 2 cursor c_emp is 3 select * from emp; 4 v_emp c_emp%rowtype; 5 begin 6 open c_emp;loop 7 fetch c_emp into v_emp; 8 exit when c_emp%notfound; 9 dbms_output.put_line(v_emp.ename||' '||v_emp.empno||' '||v_emp.deptno||' '||v_emp.sal); 10 end loop; 11 close c_emp; 12 end; 13 / SMITH 7369 20 800 ALLEN 7499 30 1600 WARD 7521 30 1250 JONES 7566 20 2975 MARTIN 7654 30 1250 BLAKE 7698 30 2850 CLARK 7782 10 2450 SCOTT 7788 20 3000 KING 7839 10 5000 TURNER 7844 30 1500 ADAMS 7876 20 1100 JAMES 7900 30 950 FORD 7902 20 3000 MILLER 7934 10 1300 PL/SQL 过程已成功完成。 SQL> set serveroutput on SQL> v_emp emp%ROWTYPE; SP2-0734: 未知的命令开头 "v_emp emp%..." - 忽略了剩余的行。 SQL> declare 2 v_emp emp%ROWTYPE; 3 BEGIN 4 SELECT * INTO v_emp FROM EMP WHERE ename='SMITH'; 5 DBMS_OUTPUT.PUT_LINE(v_emp.empno||' '||v_emp.sal||' '||v_emp.deptno); 6 EXCEPTION 7 WHEN NO_DATA_FOUND THEN 8 INSERT INTO EMP(EMPNO,ENAME,SAL,DEPTNO) VALUES(2007,'SMITH',1500,10); 9 WHEN TOO_MANY_ROWS THEN 10 FOR v IN (SELECT * FROM EMP WHERE ENAME='SMITH') LOOP 11 DBMS_OUTPUT.PUT_LINE(v.empno||' '||v.sal||' '||v.deptno); 12 END LOOP; 13 END; 14 / 7369 800 20 PL/SQL 过程已成功完成。 (3) CREATE OR REPLACE PROCEDURE SHOWSAL(p_empno emp.empno%type) AS v_sal emp.sal%TYPE; BEGIN SELECT sal INTO v_sal FROM emp WHERE empno=p_empno; DBMS_OUTPUT.PUT_LINE(v_sal); END; begin showsal(7844); end; (4) CREATE OR REPLACE PROCEDURE UPDATESAL (p_empno emp.empno%TYPE) AS v_deptno emp.deptno%TYPE; v_inc emp.sal%TYPE; BEGIN SELECT deptno INTO v_deptno FROM emp WHERE empno=p_empno; CASE v_deptno WHEN 10 THEN v_inc:=150; WHEN 20 THEN v_inc:=200; WHEN 30 THEN v_inc:=250; ELSE v_inc:=300; END CASE; UPDATE emp SET sal=sal+v_inc WHERE empno=p_empno; END; (5) CREATE OR REPLACE FUNCTION fun_sal(p_empno emp.empno%type) RETURN emp.sal%TYPE AS v_sal emp.sal%TYPE; BEGIN SELECT sal INTO v_sal FROM EMP WHERE empno=p_empno; RETURN v_sal; END; ) (6 CREATE OR REPLACE FUNCTION fun_avgsal(p_deptno emp.deptno%type) RETURN emp.sal%type AS v_sal emp.sal%type; BEGIN SELECT AVG(SAL) INTO V_SAL FROM EMP WHERE DEPTNO=P_DEPTNO; RETURN V_SAL; END; (7) CREATE OR REPLACE FUNCTION fun_avg_sal(p_empno emp.empno%type) RETURN emp.sal%type AS v_sal emp.sal%type; BEGIN SELECT AVG(SAL) INTO V_SAL FROM EMP WHERE DEPTNO=(select deptno from emp where empno=p_empno); RETURN V_SAL; END; (8) CREATE OR REPLACE PACKAGE PKG_EMP AS FUNCTION func_highsal(p_deptno emp.deptno%type) RETURN emp.sal%type; PROCEDURE proc_highsal(p_deptno emp.deptno%type); END; CREATE OR REPLACE PACKAGE BODY PKG_EMP AS FUNCTION func_highsal(p_deptno emp.deptno%type) RETURN emp.sal%type AS v_highsal emp.sal%type; BEGIN select max(sal) into v_highsal from emp where deptno=p_deptno; return v_highsal; END; PROCEDURE proc_highsal(p_deptno emp.deptno%type) AS BEGIN FOR v_emp IN (SELECT * FROM EMP WHERE deptno=p_deptno and sal=func_highsal(p_deptno)) LOOP DBMS_OUTPUT.PUT_LINE(v_emp.empno||' '||v_emp.ename); END LOOP; END; END; BEGIN pkg_emp.proc_highsal(10); END; (9) CREATE OR REPLACE TRIGGER trg_emp AFTER INSERT OR UPDATE OR DELETE ON EMP DECLARE v_sal emp.sal%type; v_count number; BEGIN SELECT AVG(SAL),COUNT(*) INTO V_SAL,V_COUNT FROM EMP; DBMS_OUTPUT.PUT_LINE(V_SAL||' '||V_COUNT); END; (10) CREATE OR REPLACE PACKAGE PKG_DEPTNO AS V_DEPTNO EMP.DEPTNO%TYPE; V_SAL EMP.SAL%TYPE; END; CREATE OR REPLACE TRIGGER trg_updateemp BEFORE UPDATE ON EMP FOR EACH ROW BEGIN PKG_DEPTNO.V_SAL:=:NEW.SAL; PKG_DEPTNO.V_DEPTNO:=:NEW.DEPTNO; END; CREATE OR REPLACE TRIGGER trg_statement AFTER UPDATE ON EMP DECLARE v_highsal emp.sal%type; v_lowsal emp.sal%type; BEGIN SELECT MAX(SAL),MIN(SAL) INTO v_highsal,v_lowsal FROM EMP WHERE DEPTNO= PKG_DEPTNO.V_DEPTNO; IF PKG_DEPTNO.V_SAL>v_highsal or pkg_deptno.v_sal= 6 and v_time <= 8 then dbms_output.put_line('起床。'); elsif v_time > 8 and v_time < 17 then dbms_output.put_line('工作'); elsif v_time >= 18 and v_time <= 22 then dbms_output.put_line('下班'); else dbms_output.put_line('睡觉'); end if; end; 2、求和 declare v_x number; v_sum number; begin v_sum:=0; v_x:=1; loop v_sum:=v_sum+v_x; v_x:=v_x+1; if v_x>100 then exit; end if; end loop; dbms_output.put_line(v_sum); end; Chapter 3 (8) A 3 (9) B (1) C (10) A Chapter 6 (2) D 3 (3) A (4) B (1) B C (5) A (2) A (6) A (3) A (7) D (4) C (5) B (1) C (6) C (2) A (7) B (3) D (8) A (4) B (9) C (5) AB (10) A (6) B Chapter 7 (7) A C (1) C (8) B (2) C (9) B (3) B (10) C (4) A Chapter 12 (5) C (6) A (1) A (7) B (2) B (8) A (3) A (9) B (4) A (10) D (5) B (11) D (6) A (12) A (7) D Chapter 8 (8) D (1) D (9) D (2) D (10) D Chapter 13 (3) B (4) B (1) D (5) D (2) C (6) A (3) B (7) D (4) D (8) B (5) D (9) B (6) D (10) A (7) C (8) B Chapter 10 (9) C (1) B (10) A (2) B (11) A (3) B (12) B Chapter15 (4) A (5) B (1) B (6) B (2) B (7) A (3) A (8) B (4) A (9) C (5) C (10) C (6) E (7) B Chapter 11 (8) D (9) B C (10) D (11) C (12) D (13) C (14) A (15) B D (16) B (17) C (18) A B Chapter16 (1) A (2) B (3) ACD (4) AE (5) C D (6) CE (7) C (8) A (9) E (10) A
/
本文档为【[计算机软件及应用]oracle 10g 数据库基础教程 孙风栋主编 课后习题答案 Oracle选择题中文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索