《Oracle复习资料更新.doc》由会员分享,可在线阅读,更多相关《Oracle复习资料更新.doc(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第1章 Oracle数据库概述1.1 Oracle数据库简介问题:Oracle是什么?Oracle数据库系统是一个管理数据的软件。Oracle用途?对数据进行管理(增、删、改、查)。1.2 Oracle数据库新特性?网格计算数据库 Oracle Real Application Clusters自动存储管理 信息供应数据库自动管理 物化视图与查询重写 闪回版本查询与闪回错误操作 数据泵 其他新特性1.4 Oracle数据库应用结构?客户-服务器结构(C/S)终端-服务器结构 (T/S)浏览器-服务器结构 (B/S) 分布式数据库系统(D/S)复习题2.实训题(1)根据下列叙述,设计数据库的E-
2、R图、 学校有若干个系,每个系有若干个班级和教研室,每个教研室有若干个老师,每个老师带若干个教学班。每个班有若干个学生,每个学生选修若干门课程,每门课程可由若干个学生选修。(1) 根据下列描述,设计数据库的E-R图,并转换为关系模式。 授课选课系统有如下的实体,属性及语义描述: 每名学生可以学习若干门课程,每门课程可以有若干个学生学习,每名学生学完一门课程后能得到一个成绩。每门课程只由一名教师讲授,每名教师只能授一门课程。学生,课程和教师的信息如下。学生:学号、姓名、性别、年龄、所在系、所属班级;课程:课程号、课程名、学分;教师:教师号、教师姓名、性别、出生日期、职称、所在系。关系模式如下:教
3、师(教师号,姓名,性别,出生日期,系,职称,课程号)课程(课程号,课程名,学分)学生(学号,姓名,性别,年龄,班级,系)学习(学号,课程号,成绩)第3章创建数据库3.1 创建数据库前的准备问题:怎样规划数据库?确定所要创建的数据库类型。数据库类型包括事务处理(OLTP)类型、数据仓库(DSS)类型及折中的通用类型 确定数据的存储方式 确定数据库的管理方式 为新建数据库选择全局数据库名熟悉与数据库相关的初始化参数,包括初始化参数文件对系统中已存在的数据库进行备份 问题:数据库的创建方式?使用DBCA创建数据库运行脚本手工创建数据库 3.3 手动创建数据库P35 create database创建
4、数据库(重点)3.4数据库服务器初始化参数文件问题:初始化参数文件存放位置,扩展名?database 扩展名.ora复习题2.实训题(3)在创建数据库之前应该做哪些准备工作? 创建数据库之前应该做好规划、检查系统资源情况以及决定数据库的创建方式。(4)说明手动创建数据库的基本步骤。 手动创建数据库通常包含如下的操作步骤:确定新建数据库名称与实例名称;确数据库管理员的认证方式;创建初始化参数文件;创建实例;连接并启动实例;使用CREATE DATABASE语句创建数据库;创建附加的表空间;运行脚本创建数据字典视图3.选择题(8)Who owns the data dictionary?A.SYS
5、 B.SYSTEM C.DBA D.ORACLE 答案:A第4章 Oracle企业管理器4.1 OEM简介问题:OEM是什么?是管理Oracle的工具4.4 数据库控制OEM功能界面介绍问题:OEM管理内容有哪些?“主目录”属性页 “性能”属性页 “管理”属性页 (由“数据库管理”,“方案管理”,“Enterprise Manager”组成)“维护”属性页 4.5 OEM控制台设置问题:控制台是什么?是用户操作的界面。问题:哪些数据库用户能登陆和使用OEM控制台?在默认情况下,只有SYS,SYSTEM,SYSMAN三个数据库用户才能登陆和使用OEM控制台。复习题1.简答题(3)说明Oracle
6、10g数据库控制OEM首选身份证明的类型,以及配置首选省身份证明的目的。答:普通数据库首选身份证明,主机首选身份证明,SYSDBA首选身份证明。保证被管理的企业环境安全性。 2.实训题(1)为当前数据库用户配置数据库身份证明。答:略第5章 SQL*PLUS5.1 SQL*Plus概述问题:启动SQL*Plus方法1.命令行方式启动SQL*Plus 2.图形界面方式启动SQL*Plus3.web浏览器启动SQL*Plus 问题:进入和退出sql*Plus的相关命令?进入:sqlplususername/passwordconnect_identifier|NOLOG退出:exit5.2 SQL*
7、Plus常用命令 问题:可以在SQL*Plus中执行哪些语句?SQL语句、PL/SQL程序和SQL*Plus命令。(了解SQL*Plus连接命令,编辑命令写法P61了解脚本文件的创建、装载与编辑、执行P62P63了解其他常用命令中的显示数据库对象结构,修改用户命令p70)5.3iSQL*Plus问题:iSQL*Plus与SQL*plus的区别?ISQL*PLUS是个网页版的查询,SQL*PLUS是基于命令行的。复习题:1.简答题(6)在启动和登录iSQL*Plus之前,在数据库服务器端需要启动哪些服务?答:OracleService,OracleTNSListener, OracleiSQL*
8、Plus第6章 物理存储结构6.1 Oracle数据库系统结构问题:Oracle数据库系统结构由什么构成?Oracle 数据库系统结构由数据库实例和物理存储结构组成。 读懂图61 图626.2数据文件及其管理问题:数据文件有哪些?(就是数据库的物理结构)数据文件,控制文件,重做日志文件归档文件,初始化参数文件,跟踪文件,口令文件,警告文件备份文件清楚他们的扩展名1.创建数据文件实例p77例1.例22.修改数据文件大小实例p77例3.例4.例5。例96.4重做日志文件问题:重做日志文件概念重做日志文件,保存了用户对数据库所作的更新操作(DDL、DML),包含的主要信息是记录事务的开始和结束、事务
9、中每项操作的对象和类型、更新操作前后的数据值等。添加重做日志文件组成员实例p91复习题1.简答题(1)简单描述Oracle数据库体系结构的及其关系。Oracle数据库体系结构由物理存储结构、逻辑存储结构和实例组成。其中物理存储结构描述了操作系统层次数据的存储与管理,包括数据文件、日志文件、重做日志文件等组成。逻辑结构描述了数据库内部数据的组织与管理,由表空间、段、区、块组成。实例是数据库运行的软件结构,由内存结构和后台进程组成。数据库运行过程中,用户的操作在内存区中进行,最终通过后台进行转化为对数据库的操作。2.实训题(1)为USERS表空间添加一个数据文件,文件名为USERS03.DBF,大
10、小为50M。ALTER TABLESPACE USERADD DATAFILE D:ORACLEORADATAORCLuserdata03.dbf SIZE 50M;(8)为新建的重做日志文件组添加一个成员文件,名称为redo4c.log。 ALTER DATABASE ADD LOGFILE MEMBER D:ORACLEORADATAORCLredo04c.log TO GROUP 4;3.选择题(4)Complete the following sentence: The recommended configuration for control files is?A. One the
11、control file per databaseB. One control file per diskC. Two control file on two diskD. Two control files on one disk答:B(8)Which file is used to record all chances made to the database and is used only when performing an instance recovery?A. Archive log fileB. Redo log fileC. Control fileD. Alert log
12、 file答:B第7章 逻辑存储结构7.1 逻辑存储结构概述问题:Oracle10g数据库逻辑存储结构之间的关系?参见p102图7-1问题:数据库、表空间、数据文件、数据库对象之间的关系?参见p103图7-27.2表空间表空间的管理实例1.创建表空间p106例4。例52.修改表空间p107例8.例12。例137.3 数据块(BLOCK)问题:PCTFREE参数,PCTUSED参数含义?PCTFREE参数指定块中必须保留的最小空闲空间比例。PCTUSED参数指定可以向块中插入数据时块已使用的最大空间比例。7.4 区问题:与区分配相关的存储参数?INITIAL,NEXT,PCTINCREASE,M
13、INEXTENTS,MAXEXTENTS7.5 段问题:段的分类?数据段:用来存储表或簇的数据,可以细分为表数据段、索引表数据段、分区表数据段及簇数据段四种。复习题1简答题(1)说明数据库逻辑存储结构的组成和相互关系。Oracle9i数据库的逻辑存储结构分为数据块、区、段和表空间四种。其中,数据块是数据库中的最小I/O单元,由若干个连续的数据块组成的区是数据库中最小的存储分配单元,由若干个区形成的段是相同类型数据的存储分配区域,由若干个段形成的表空间是最大的逻辑存储单元,所有的表空间构成一个数据库。(3)说明数据库、表空间、数据文件以及数据库对象之间的关系。一个数据库由一个或多个表空间构成,不
14、同的表空间用于存放不同应用的数据,表空间的大小决定了数据库的大小。一个表空间对应一个或多个数据文件,数据文件的大小决定了表空间的大小。一个数据文件只能从属于一个表空间。一个数据库对象只能存储在一个表空间中,但可以存储在该表空间所对应的一个或多个数据文件中。2实训题(2)使用SQL命令创建一个本地管理方式下的表空间USERTBS2,要求每个分区大小为512KB。create tablespace USERTBS2datafile d:oracleoradataorclusertbs2.dbf size 50Mextent management local uniform size 512K;(4
15、)为USERTBS2表空间添加一个数据文件,以改变该表空间的大小。alter tablespace USERTBS2add datafile d:oracleoradataorclusertbs2a.dbf size 50M;(6)使用SQL命令对USERTBS1表空间进行联机和脱机状态转换。alter tablespace USERTBS1 offline;alter tablespace USERTBS1 online;(4)PCTFREE and PCTUSED together should not exceed:A.100 B.50 C.20 D.10答:A(8) The sort
16、segment of a temporary tablespace is created;A.at the time of the first sort operationB. when the TEMPORARY tablespace is createdC. when the memory required for sorting is 1kbD. all of the above答:A(12)Rollback segment stores:A. old values of the data changed by each transactionB. new values of the d
17、ata changed by each transactionC. both old and new values of the data changed by each transactionD.none答:A第八章 数据库实例8.2Oracle内存结构问题:Oracle内存区域的分类?系统全局区(SGA)和程序全局区(PGA)第11章 模式对象创建表、索引、视图实例添加约束(主键约束、唯一性约束、检查约束、外键约束、空/非空约束)第12章 安全管理12.2用户管理问题:Oracle初始用户有哪些?SYS,SYSTEM,SCOTT,PUBLIC创建用户实例p212 例1.例212.3 权限管
18、理系统的授权于撤销授权实例p218第13章 数据库备份与恢复13.1备份与恢复概述问题:备份与恢复的作用数据库备份与恢复的目的就是为了保证在各种故障发生后,数据库中的数据都能从错误状态恢复到某种逻辑一致的状态。第15章 SQL语言基础熟练各项查询语句。15.4事务控制问题:事物是什么?是完成一个任务的一段程序第16章 PL/SQL程序设计(重要章节)16.2PL/SQL基础问题:PL/SQL块的组成部分?声明部分、执行部分、异常处理部分定义一个PL/SQL块p332例1.例3用户记录类型的定义p33916.3控制语句选择结构:if语法 case语法 循环结构:loop语法 while语法 fo
19、r语法都会用到实例中 ,要熟练运用16.4游标(考显示游标题一道)游标包括显示游标和隐式游标游标的定义:语法CURSOR cursor_name IS select_statement 打开:语法OPEN cursor_name; 检索:语法格式FETCH cursor_name INTO variable_list|record_variable; 关闭:语法格式 CLOSE cursor_name; 参数化显式游标实例如:查询并输出某个部门的员工信息DECLARE CURSOR c_emp(p_deptno emp.deptno%TYPE)IS SELECT * FROM emp WHER
20、E deptno=p_deptno; v_emp c_emp%ROWTYPE;BEGIN OPEN c_emp(10); LOOP FETCH c_emp INTO v_emp; EXIT WHEN c_emp%NOTFOUND; DBMS_OUTPUT.PUT_LINE(v_emp.empno| |v_emp.ename); END LOOP; CLOSE c_emp; OPEN c_emp(20); LOOP FETCH c_emp INTO v_emp; EXIT WHEN c_emp%NOTFOUND; DBMS_OUTPUT.PUT_LINE(v_emp.empno| |v_emp.
21、ename); END LOOP; CLOSE c_emp;END;16.5异常处理了解异常处理的写法(exception .end)16.6存储子程序存储过程的创建CREATE OR REPLACE PROCEDURE procedure_name(parameter1_name mode datatype DEFAULT|:=value, parameter2_name mode datatype DEFAULT|:=value,)AS|IS /*Declarative section is here */BEGIN /*Executable section is here*/ EXCEP
22、TION /*Exception section is here*/ ENDprocedure_name; 函数的创建基本语法为 CREATE OR REPLACE FUNCTION function_name (parameter1_name mode datatype DEFAULT|:=value, parameter2_name mode datatype DEFAULT|:=value,)RETURN return_datatype AS|IS /*Declarative section is here */BEGIN /*Executable section is here*/ E
23、XCEPTION /*Exception section is here*/ END function_name; 注意看书上的例题。16.7包包的创建语法CREATE OR REPLACE PACKAGE package_name IS|ASPRAGMA SERIALLY_RESUABLE type_definition|variable_declaration| exception_declaration|cursor_declaration| procedure_ declaration|function_ declarationEND package_name;注意看书上的例题。存储过
24、程和函数各考一个,写在包中、16.8触发器(考一道)问题:触发器分类?DML触发器:建立在基本表上的触发器,响应基本表的INSERT,UPDATE,DELETE操作。INSTEAD OF触发器系统触发器16.9集合看P393最下面那道例题复习题(4)创建一个存储过程,以员工号为参数,修改该员工的工资。若该员工属于10号部门,则工资增加150;若属于20号部门,则工资增加200;若属于30号部门,则工资增加250;若属于其他部门,则工资增加300.CREATE OR REPLACE PROCEDURE UPDATESAL (p_empno emp.empno%TYPE)AS v_deptno e
25、mp.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)创建一个存储过程,以员工号为参数,返回该员工的工作年限(以
26、参数形式返回)。答:CREATE OR REPLACE PROCEDURE RETURN_GZNX(p_empno emp.empno%type,p_gznx out number)AS v_gznx NUMBER(2); BEGIN SELECT trunc(months_between(sysdate,hiredate)/12) INTO v_gznx FROM emp WHERE empno=p_empno; p_gznx:=v_gznx; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE(无此员工); END; (8)创建一个
27、函数,以部门号为参数,返回该部门的平均工资。CREATE OR REPLACE FUNCTION RET_AVGSAL(p_deptno emp.deptno%type) RETURN emp.sal%typeAS v_avgsal emp.sal%type;BEGIN SELECT avg(sal) INTO v_avgsal FROM emp WHERE deptno=p_deptno; IF v_avgsal IS NULL THEN DBMS_OUTPUT.PUT_LINE(无此部门!); RETURN 0; ELSE RETURN v_avgsal; END IF; END;(9)创
28、建一个函数,以员工号为参数,返回该员工所在部门的平均工资。CREATE OR REPLACE FUNCTION RET_AVGSAL_EMPNO(p_empno emp.empno%type) RETURN emp.sal%typeAS v_deptno emp.deptno%type; v_avgsal emp.sal%type;BEGIN SELECT deptno INTO v_deptno FROM emp WHERE empno=p_empno; SELECT avg(sal) INTO v_avgsal FROM emp WHERE deptno=v_deptno; RETURN
29、v_avgsal;EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE(无此员工!); RETURN 0;END;(10)创建一个包,包中包含一个函数和一个过程。函数以部门号为参数,返回该部门员工的最高工资;过程以部门号为参数,输出该部门中工资最高的员工名、员工号。Create or replace package pkg_empas function func_highsal(p_deptno emp.deptno%type) return emp.sal%type; procedure proc_highsal(p_deptno em
30、p.deptno%type);end;/create or replace package body pkg_empas 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
31、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;(11)创建一个包,包中包含一个过程和游标。游标返回所有员工的信息;存储过程实现每次输出游标中的5条记录。答:create or replace package pkg_persistcursoras
32、 cursor c_emp is select * from emp; procedure displayemp;end; create or replace package body pkg_persistcursorAs procedure displayemp As v_emp emp%rowtype; begin if not c_emp%isopen then open c_emp;end if;for i in 1.5 loop fetch c_emp into v_emp; dbms_output.put_line(v_emp.empno| | v_emp.ename); end
33、 loop;end;end;/begin pkg_persistcursor.displayemp;end; (14)在emp表上创建一个触发器,保证修改员工工资时,修改后的工资低于该部门最高工资,同时高于该部门最低工资。答:create or replace package pkg_deptnoas v_deptno emp.deptno%type; v_sal emp.sal%type;end;/create or replace trigger trg_updateempbefore update on empfor each row begin pkg_deptno.v_sal:=:n
34、ew.sal; pkg_deptno.v_deptno:=:new.deptno;end;/create or replace trigger trg_statementafter update on empdeclare 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_salv_highsal or pkg_deptno.
35、v_salv_lowsal then raise_application_error(-20001,the sal is beyond!); end if;end;update emp set sal=500 where empno=7844;(15)在dept表上创建一个触发器,保证删除该表中记录的操作可以正常进行。答:略(17)创建一个函数,返回各个部门的员工号、员工人数以及员工平均工资信息(函数返回值为嵌套表类型)。答:略(18)创建一个存储过程,以一个整数为参数,输出工资最高的前几个(参数值)员工的信息。答:略3 选择题(1)You need to remove the databas
36、e trigger trg_emp.which command do you use to remove the trigger in the SQL*Plus environment ? A . DROP TRIGGER trg_emp B . DELETE TRIGGER trg_emp C . REMOVE TRIGGER trg_emp D . ALTER TRIGGER trg_emp REMOVE答:A(8) Which part of a database trigger determines the number of times the trigger body execut
37、es? A. trigger type B. trigger body C. trigger event D. trigger timing答:A (10) When a program executes a SELECTFOR UNDATE statement,Which of the following must it do? A. Execute a COMMIT or ROLLBACK to end the transaction,even if no data has changed B. Change the data values in the rows selected,then commit or rollback to end the transaction C. Execute a COMMIT or ROLLBACK to end the transaction ,but only if data has changed C. Because a transaction doesnt start unitl data has actually changed,no CONMMIT or ROLLBACK needs to executed答:A有些题没有找到答案,请见谅
限制150内