oracle期末(一)

上午oracle 考完:

 

Oracle数据库基础教程

第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图如下:

 

(2)E-R图如下:

 

 

关系模式如下:

教师(教师号,姓名,性别,出生日期,系,职称,课程号)

课程(课程号,课程名,学分)

学生(学号,姓名,性别,年龄,班级,系)

学习(学号,课程号,成绩)

 

第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组织文件以及文件命名的一套规则。例如<ORA_HOME>对应存放安装软件的目录,在Oracle相关服务中都包含主目录名称等。

(10)略

2.实训题

(1)略

(2)略

(3)

打开网络管理对话框,分别选中左侧树状结构中的监听器和数据库,修改右侧对话框中的主机名为当前的计算机名。

(4)略

第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

③将服务器初始参数文件转换为文本出示参数文件。

 

2.实训题

(1)       CREATE SPFILE FROM PFILE=path

(2)       CREATE PFILE FROM SPFILE

(3)       略

(4)       略

(5)       SELECT NAME,VALUE FROM V$PARAMETER

(6)       ALTET SESSION SET NLS_DATE_FORMAT=’YYYY-MM-DD HH24:MI:SS’

3.选择题

(1)       C

(2)     C

(3)     A

(4)     B

(5)     A

(6)     A

(7)     C

(8)     A

(9)     B

(10)   D

第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使用。

(6) 在OEM中没有出现目标节点,其原因可能是该节点上的没有运行智能代理服务,或是该节点已关闭,也可能是网络故障导致连接失败;

2.实训题

(1)略

(2)略

(3)略

(4)略

(5)略

第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环境中定义绑定变量或定义替换变量,用户与程序的交互。

2.实训题

(1)CONNECT SYSTEM/MANAGER @ORCL

(2)CONNECT  / ·ORCL AS SYSDBA

(3)略

(4)

COLUMN SAL FORMAT L99999.99

SELECT EMPNO,SAL FROM SCOTT.EMP;

(5)

TTITLE CENTER ‘员工信息:’

BTITLE RIGHT  ‘制作人:’

SELECT * FROM SCOTT.EMP;

 

第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等数据字典可以查询相应的物理结构信息。

2.实训题

(1)       ALTER TABLESPACE USER

ADD DATAFILE  ‘D:\ORACLE\ORADATA\ORCL\userdata03.dbf’ SIZE 50M’;

(2)       ALTER TABLESPACE EXAMPLE

ADD DATAFILE  ‘D:\ORACLE\ORADATA\ORCL\example02.dbf’ SIZE 20M’;

(3)       ALTER DATABASE DATAFILE  ‘D:\ORACLE\ORADATA\ORCL\userdata03.dbf’ AUTOEXTEND ON NEXT 5M MAXSIZE 100M;

(4)       ALTER DATABASE DATAFILE  ‘D:\ORACLE\ORADATA\ORCL\example02.dbf’ RESIZE 40M;

(5)       SHUTDOWN IMMEDIATE;

在操作系统中重命名userdata03.dbf、example03.dbf分别为userdata04.dbf、example04.dbf

STARTUP MOUNT;

ALTER DATABASE RENAME FILE ‘D:\ORACLE\ORADATA\ORCL\userdata03.dbf’, ‘D:\ORACLE\ORADATA\ORCL\example03.dbf’  TO

‘D:\ORACLE\ORADATA\ORCL\userdata04.dbf’, ‘D:\ORACLE\ORADATA\ORCL\example04.dbf’;

  

ALTER DATABASE OPEN;

(6)        

ALTER DATABASE BACKUP CONTROLFILE TO ‘D:\ORACLE\CONTROL.BKP’;

(7)        

ALTER DATABASE ADD LOGFILE GROUP  4

(‘D:\ORACLE\ORADATA\ORCL\redo04a.log’,’D:\ORACLE\ORADATA\ORCL\redo04b.log’)SIZE 5M;

(8)        

ALTER DATABASE ADD LOGFILE MEMBER ‘D:\ORACLE\ORADATA\ORCL\redo04c.log’ TO GROUP 4;

(9)        

SHUTDOWN IMMEDIATE

STARTUP MOUNT

ALTER DATABASE ARCHIVELOG;

ALTER DATABASE OPEN;

ALTER SYSTEM ARCHIVE LOG START

(10)    

ALTER SYSTEM SET LOG_ARCHIVE_DEST=’D:\ORACLE\BACKUP’

3.选择题

(1)B、C

(2)A

(3)A

(4)B

(5)B

(6)C

(7)B

(8)B

(9)D

(10)A

 

第7章逻辑存储结构

1.简答题

(1) 说明数据库逻辑存储结构的组成和相互关系。

Oracle9i数据库的逻辑存储结构分为数据块、区、段和表空间四种。其中,数据块是数据库中的最小I/O单元,由若干个连续的数据块组成的区是数据库中最小的存储分配单元,由若干个区形成的段是相同类型数据的存储分配区域,由若干个段形成的表空间是最大的逻辑存储单元,所有的表空间构成一个数据库。

(2) 说明数据库表空间的种类,以及不同类型表空间的作用。

数据库表空间分为系统表空间和非系统表空间两类,其中非系统表空间包括撤销表空间、临时表空间和用户表空间等。

SYSTEM表空间主要用于存储数据库的数据字典、PL/SQL程序的源代码和解释代码、数据库对象的定义。撤销表空间专门进行回退信息的自动管理。临时表空间是专门进行临时段管理的表空间。用户表空间用于分离不同应用的数据,而且能够减少读取数据文件时产生的I/O冲突。

(3) 说明数据库、表空间、数据文件以及数据库对象之间的关系。

一个数据库由一个或多个表空间构成,不同的表空间用于存放不同应用的数据,表空间的大小决定了数据库的大小。一个表空间对应一个或多个数据文件,数据文件的大小决定了表空间的大小。一个数据文件只能从属于一个表空间。一个数据库对象只能存储在一个表空间中,但可以存储在该表空间所对应的一个或多个数据文件中。

(4) 数据库表空间的管理方式有几种,各有什么特点?

数据库表空间的管理方式有两种:字典管理方式和本地管理方式。在字典管理方式下,表空间使用数据字典来管理存储空间的分配,当进行区的分配与回收时,Oracle将对数据字典中的相关基础表进行更新,同时会产生回退信息和重做信息。在本地管理方式中,区的分配和管理信息都存储在表空间的数据文件中,而与数据字典无关。

(5) 表空间管理时应考虑哪些问题?

表空间管理时,应该遵循以下原则:

l  将数据字典与用户数据分离;

l  将回退数据与用户数据分离;

l  将表空间的数据文件分散保存到不同的硬盘上;

l  为不同的应用创建独立的表空间。

(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;

(8)删除表空间USERTBS2,同时删除该表空间的内容以及对应的操作系统文件。

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.选择题

(1)             C

(2)             C

(3)             B

(4)             A

(5)             C

(6)             A

(7)             B

(8)             A

(9)             B

(10)          D

(11)          D

(12)          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进程将启动,将数据高速缓冲区中的脏数据写入数据文件。

l  服务器进程在数据高速缓存区中搜索一定数量的缓存块后,仍然没有找不到可用的空闲缓存块,此时DBWR进程将被启动。

l  检查点发生时,将启动DBWR进程。

l  当数据高速缓冲区中LRU列表长度达到初始化参数DB_BLOCK_WRITE_BATCH指定值的一半时,DBWR进程将被启动。

l  DBWR进程发生超时(大约3秒),DBWR进程将被启动。

(7)

日志写入进程负责把重做日志缓冲区的重做记录写入重做日志文件中永久保存。

DBWR进程在工作之前,需要了解LGWR进程是否已经把相关的日志缓冲区中的重做记录写入重做日志文件中。如果还没有写入重做日志文件,DBWR进程将通知LGWR进程完成相应的工作,然后DBWR进程才开始写入。这样可以保证先将与脏缓存块相关的重做记录信息写入重做日志文件,然后将脏缓存块写入数据文件,即先写重做日志文件,后写数据文件。

当下列事件发生时,LGWR进程将重做日志缓冲区中的重做记录写入重做日志文件。

l  用户通过COMMIT语句提交当前事务。

l  重做日志缓冲区被写满三分之一。

l  DBWR进程开始将脏缓存块写入数据文件。

LGWR进程超时(大约3秒),LGWR进程将启动。

(8)

SMON进程的主要功能包括:在实例启动时负责对数据库进行恢复;回收不再使用的临时空间;将各个表空间的空闲碎片合并。

PMON进程的主要功能包括:负责恢复失败的用户进程或服务器进程,并且释放进程所占用的资源;清除非正常中断的用户进程留下的孤儿会话,回退未提交的事务,释放会话所占用的锁、SGA、PGA等资源;监控调度进程和服务器进程的状态,如果它们失败,则尝试重新启动它们,并释放它们所占用的各种资源。

(9)

在Oracle数据库中,数据库的操作模式分为专用服务器(DELICATED SERVER)模式和多线程服务器(MULTITHREADED SERVER)模式两种。其中,在专用服务器模式中为每个用户进程创建一个服务器进程,用户进程与服务器进程之间是1:1的关系;在共享服务器模式中,一个服务器进程可以为多个用户进程服务器。

(10)

专用服务器模式工作过程

l  用户进程向一个数据库实例发出连接请求。

l  位于数据库服务器中的Oracle监听程序探测到用户进程请求后,首先验证用户进程提供的用户名和口令,验证通过后建议一个专用的服务器进程为该用户进程提供服务。

l  用户提交一条SQL语句。

l  专用服务器进程首先判断在共享SQL工作区中是否存在类似的SQL语句。如果不存在,将为这条SQL语句分配新的共享SQL工作区,然后解析该语句。在解析过程中,服务器进程将检查该语句的语法正确性。同时,该语句的私有数据和信息保存到服务器进程的PGA中。

l  解析完成后,服务器进程开始在数据高速缓冲区中寻找SQL语句所要求的数据。如果数据不在数据高速缓冲区中,还需要从数据文件中将所需要的数据读取到数据高速缓冲区中。

l  服务器进程执行SQL语句。如果SQL语句要对数据进行更改,仅在数据高速缓冲区中对缓存块进行更改,并将更改所生成的重做记录保存在重做日志缓存中。将来,由LGWR进程将重做记录写入重做日志文件,由DBWR进程将脏缓存块写入数据文件。

l  执行完毕后,服务器进程将结果返回给用户进程。

   (11)

 多线程服务器模式工作过程

l   在客户端创建一个用户进程,连接数据库。

l  位于服务器中的Oracle监听程序探测到用户进程请求后,首先验证用户进程提供的用户名和口令,验证通过后将该用户进程分配给一个调度进程。用户进程直接与调度进程进行交互。

l  用户提交一条SQL语句,调度进程对SQL语句进行处理,然后将处理结果放入位于SGA区中的一个“请求队列”中,同时将调度程序ID也存入请求队列。

l  当某个共享服务器进程空闲时,从“请求队列”中取出一条处理后的SQL语句,并对该语句进行解析和执行,得到它所请求的数据。

l  共享服务器进程将处理结果放入SGA区中的一个“响应队列”中。

l  调度程序定期检查“响应队列”,如果发现有自己送出请求的处理结果,则将结果取出。调度程序根据处理结果中保存的调度程序ID来标识该结果是否是自己的。

l  调度程序将处理结果返回给用户进程。

2.选择题

(1)D

(2)D

(3)B

(4)B

(5)D

(6)A

(7)D

(8)B

(9)B

(10)A

第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将执行下列操作:

l  阻止任何用户建立新的连接;

l  等待当前所有正在连接的用户主动断开连接;

l  一旦所有用户断开连接,则关闭数据库;

l  数据库下次启动时不需要任何实例的恢复过程。

Ø  SHUTDOWN IMMEDIATE

如果要求在尽可能短时间内关闭数据库,如即将启动数据库备份操作、即将发生电力供应中断、数据库本身或某个数据库应用程序发生异常需要关闭数据库等,都可以采用SHUTDOWN IMMEDIATE命令来立即关闭数据库。

当采用SHUTDOWN IMMEDIATE方式关闭数据库时,Oracle将执行下列操作:

l  阻止任何用户建立新的连接,也不允许当前连接用户启动任何新的事务;

l  回滚所有当前未提交的事务;

l  终止所有用户的连接,直接关闭数据库;

l  数据库下一次启动时不需要任何实例的恢复过程。

Ø  SHUTDOWN TRANSACTION

如果要求在尽量短的时间内关闭数据库,同时还要保证所有当前活动事务可以提交,则可以采用SHUTDOWN TRANSACTION命令关闭数据。

当采用SHUTDOWN TRANSACTION方式关闭数据库时,Oracle将执行下列操作:

l  阻止所有用户建立新的连接,也不允许当前连接用户启动任何新的事务;

l  等待用户回滚或提交任何当前未提交的事务,然后立即断开用户连接;

l  关闭数据库;

l  数据库下一次启动时不需要任何实例的恢复过程。

Ø  SHUTDOWN ABORT

如果前三种方法都无法成功关闭数据库,说明数据库产生了严重错误,只能采用终止方式,即SHUTDOWN ABORT命令来关闭数据库,此时会丢失一部分数据信息,对数据库完整性造成损害。

当采用SHUTDOWN ABORT方式关闭数据库时,Oracle将执行下列操作:

l  阻止任何用户建立新的连接,同时阻止当前连接用户开始任何新的事务。

l  立即结束当前正在执行的SQL语句。

l  任何未提交的事务不被回滚。

l  中断所有的用户连接,立即关闭数据库。

l  数据库实例重启后需要恢复。

(7)

STARTUP NOMOUNT可用完成的管理操作包括:

用于创建一个新的数据库、重建数据库的控制文件等。

STARTUP MOUNT可以完成的管理操作包括:

用于重命名数据文件、添加、删除或重命名重做日志文件、改变数据库的归档模式、执行数据库完全恢复操作等。

(8)

如果需要数据库处于OPNE模式下执行维护任务,而同时要保证其他用户不能在数据库中建立连接和执行操作,此时应该使用STARTUP RESTRICT命令启动数据库。

当执行下列操作时,需要使用STARTUP RESTRICT命令启动数据库。

l  执行数据库数据的导出或导入操作

l  执行数据装载操作

l  暂时阻止普通用户连接数据库

l  进行数据库移植或升级操作

(9)

所谓的静默状态是指只允许DBA用户在数据库中进行操作,而其他所有用户都不能进行数据库的访问。DBA在进行数据库的管理与维护,执行某些特殊操作时,需要排除其他用户对数据库的操作。例如,DBA在执行某些操作的程中,如果有其他用户访问操作的对象,将导致管理操作失败;DBA的某些操作在执行过程中所产生的中间结果不应当被其他用户看到。

   当数据库处于挂起状态时,数据库所有的物理文件的I/O操作都被暂停。但是与静默状态不同,挂起状态不禁止非DBA用户进行数据库操作,只是暂时停止所有用户的I/O操作

(10)

数据库启动时首先从默认位置读取服务器端初始化参数文件,如果没有,则读取默认位置的文本初始化参数文件;如果还没有则可以通过PFILE参数指定文本初始化参数文件文件。

2.实训题

(1)

STARTUP MOUNT

(2)

STARTUP RETRICT

    ALTER SYSTEM DISABLE RESTRICTED SESSION

(3)

ALTER SYSTEM SUSPEND;

ALTER SYSTEM RESUME;

(4)

SHUTDOWN IMMEDIATE;

STARTUP MOUNT;

ALTER DATABASEOPEN READ ONLY;

 

SHUTDOWN IMMEDIATE;

STARTUP MOUNT;

ALTER  DATABASE OPEN  READ  WRITE;

(5)

SHUTDOWN ;

    SHUTDOWN IMMEDIATE;

    SHUTDOWN TRANACTION;

    SHUTDOWN ABORT;

(6)

STARTUP FORCE

3.选择题

(1)C

(2)B

(3)C

(4)B

(5)B

(6)B

(7)A

(8)B

(9)B

(10)C

第10章 复习题

1.简答题

(1)

数据库模式与用户之间的区别在于:用户是数据库的使用者和管理者,用户具有帐户状态、访问权限和操作权限等属性。模式是一系列逻辑数据结构或对象的集合,是数据库中对象的组织和管理单位。

(2)

在Oracle 数据库中,根据表生存周期不同,可以分为永久性表和临时表;根据表中数据组织方式不同,可以分为标准表、索引化表和分区表。索引化表是一种特殊的表,它按B树的结构来组织和存储数据,将表的数据和索引的数据存储在一起。分区表是将一个表分成若干个独立的组成部分进行存储和管理。

(3)

表的约束包括:

Ø  主键约束:定义了主键约束的列取值不能为空,也不能重复。

Ø  唯一值约束:定义了唯一值约束的列取值不能重复。

Ø  检查约束:定义了检查约束的列取值要满足检查条件。

Ø  外键约束:定义了外键约束的列取值要么是主表参照列的值,要么是空值。

Ø  空/非空约束:定义了非空约束的列取值不能为空。

(4)

索引用于提高数据的查询效率。根据索引值是否唯一,可以分为唯一性索引和非唯一性索引;根据索引的组织结构不同,可以分为平衡树索引和位图索引;根据索引基于的列数不同可以分为单列索引和复合索引。

(5)

索引化表将按索引的结构组织表中的数据,整条记录都被保存在索引条目中。要启用溢出存储功能,必须在创建索引化表时使用OVERFLOW子句指定溢出部分的存储空间,同时使用PCTTHRESHOLD子句或INCLUDING子句来设置溢出方式。

(6)

所谓分区是指将一个巨型表或巨型索引分成若干个独立的组成部分进行存储和管理,每一个小的、可以独立管理的部分,称为原来表或索引的分区。对巨型表进行分区后,即可以对整个表进行操作,也可以针对特定的分区进行操作,从而简化了对表的管理和维护。

(7)

对表进行分区的方法包括:

Ø  范围分区:按照分区值的范围对表进行分区。

Ø  列表分区:按照分区值对表进行分区。

Ø  散列分区:采用HASH算法在指定数量的分区中均等地分配数据。

Ø  复合分区:先对表进行范围分区,然后对每个分区进行散列分区。

(8)

Ø  簇是一种存储表数据的方法,一个簇由共享相同数据块的一组表组成。在一个簇中,Oracle将多个表中具有相同相关列的记录聚簇在相同的数据块中。对于经常访问这些列的应用来说,能够减少磁盘I/O时间,改善连接查询的效率。

Ø  视图是从一个或多个表或视图中提取出来的数据的一种表现形式。在数据库中只有视图的定义,而没有实际对应“表”的存在。通过视图的使用可以提高数据的安全性,隐藏数据的复杂性,简化查询语句,分离应用程序与基础表,保存复杂查询等。

Ø  序列是用于产生唯一序列号的数据库对象,可以为多个数据库用户依次生成不重复的连续整数,通常使用序列自动生成表中的主键值。

Ø  同义词是数据库中表、索引、视图或其他模式对象的一个别名。利用同义词,一方面可以为数据库对象提供一定的安全性保障;另一方面可以简化对象访问。此外,当数据库对象改变时,只需要修改同义词而不需要修改应用程序。

Ø  数据库链接是在分布式数据库应用环境中的一个数据库与另一个数据库之间的通信途径,将远程数据库映射到本地。所有能够访问本地数据库链接的应用程序均可访问远程数据库中的模式对象。

(9)

在数据库中使用索引可以提高对表中数据的查询速度,但是,向表中插入数据需要更新索引,会影响更新速度。如果表建了索引,在有条件查询时,系统先对索引表进行查询,利用索引表可以找到相应记录的ROWID。索引建好后,由系统负责更新。

(10)

数据库中临时表分为事务级别的临时表和会话级别的临时表。创建表有三种方法:

定义表名、列名、类型与约束等直接创建表;利用子查询间接创建表。

2.实训题

(1)

Create table class(

CNO number(2) primary key,

CNAME varchar2(20),

NUM number(3)

)

Create table student(

SNO number(4) primary key,

SNAME varchar2(10) unique,

SAGE number,

SEX char(2),

CNO number(2)

)

(2)

Alter table student add constraint fk_cno foreign key (cno) references class(cno) deferrable;

(3)

Alter table student add constraint ck_sage check (sage>0 and sage<=100);

(4)

alter table student add constraint ck_stu check(sex='M' or sex='F')modify sex default 'M'

(5)

Create unique index ind_cname on class(cname);

(6)

Create global temporary table stu_trans

On commit delete rows  as

Select * from student;

 

Create global temporary table stu_sess

On commit preserve rows as

Select * from student;

(7)

Create table student(

SNO number(4) primary key,

SNAME varchar2(10) unique,

SAGE number,

SEX char(2),

CNO number(2)

)

Organization index

(8)

create table student_range(

sno number(4) primary key,

sname varchar2(10),sage number,

sex char(2),cno number(2))

partition by range(sage)

(partition part1 values less than(20) tablespace example,

partition part2 values less than(30) tablespace orcltbs1,

partition part3 values less than(maxvalue) tablespace orcltbs2)

(9)

create table student_list(

sno number(4) primary key,

sname varchar2(10),sage number,

sex char(2),cno number(2))

partition by list(sex)

(partition man values('M') tablespace orcltbs1,

partition woman values('F') tablespace orcltbs2)

(10)

Create cluster class_number(cno NUMBER(2));

 

Create table class(

CNO number(2) primary key,

CNAME varchar2(20),

NUM number(3)

)Cluster class_number(cno);

 

Create table student(

SNO number(4) primary key,

SNAME varchar2(10) unique,

SAGE number,

SEX char(2),

CNO number(2)

)Cluster class_number(cno);

(11)

Create sequence sequ1 increment by 2 start with 10000  maxvalue 100000 nocycle;

(12)

Create public synonym employee for scott.emp;

(13)

Create view employee_v(empno,ename,mgr_no,mgr_name)

As

Select e1.empno,e1.ename,e1.mgr,e2.ename from emp e1 join emp e2 on e1.mgr=e2.empno;

3.选择题

(1)C

(2)A

(3)D

(4)B

(5)BD

(6)B

(7)AC

(8)BE

(9)B

(10)C

 

 

第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)数据库概要文件资源控制参数包括:

l  CPU_PER_SESSION :限制用户在一次会话期间可以占用的CPU 时间总量,单位为百分之一秒。当达到该时间限制后,用户就不能在会话中执行任何操作了,必须断开连接,然后重新建立连接。

l  CPU_PER_CALL:限制每个调用可以占用的CPU 时间总量,单位为百分之一秒。当一个SQL语句执行时间达到该限制后,该语句以错误信息结束。

l  CONNECT_TIME:限制每个会话可持续最大时间值,单位为分钟。当数据库连接持续时间超出该设置时,连接被断开。

l  IDLE_TIME:限制每个会话处于连续空闲状态最大时间值,单位为分钟。当会话空闲时间超过该设置时,连接将被断开。

l  SESSIONS_PER_USER:限制一个用户打开数据库会话的最大数量。

l  LOGICAL_READS_PER_SESSION:允许一个会话读取数据块的最大数量,包括从内存中读取的数据块和从磁盘中读取的数据块的总和。 

l  LOGICAL_READS_PER_CALL :允许一个调用读取的数据块的最大数量,包括从内存中读取的数据块和从磁盘中读取的数据块的总和。

l  PRIVATE_SGA:在共享服务器操作模式中,执行SQL语句或PL/SQL程序时,Oracle将在SGA中创建私有SQL区。该参数限制在SGA中一个会话可分配私有SQL区的最大值。

l  COMPOSITE_LIMIT :称为“综合资源限制”,是一个用户会话可以消耗的资源总限额。该参数由CPU_PER_SESSION、 LOGICAL_READS_PER_SESSION、 PRIVATE_SGA、 CONNECT_TIME几个参数综合决定。

(10)概要文件中的口令管理参数包括:

l  FAILED_LOGIN_ATTEMPTS:该参数限制用户在登录Oracle数据库时允许失败的次数。一个用户尝试登录数据库的次数达到该值时,该用户的账户将被锁定,只有解锁后才可以使用。

l  PASSWORD_LOCK_TIME:该参数用于设定当用户登录失败后,用户账户被锁定的时间长度。

l  PASSWORD_LIFE_TIME:该参数用于设置用户口令有效天数。达到限制的天数后,该口令将过期,需要设置口令。

l  PASSWORD_GRACE_TIME:用于设定在PASSWORD_LIFE_TIME过期后一个天数。在这几天中,用户将接收到一个关于口令过期需要修改口令的警告。当达到规定的天数后,原口令过期。

l  PASSWORD_REUSE_MAX:该参数用于指定一个用户口令被修改后,必须经过多少天后才可以重新使用该口令。

l  PASSWORD_REUSE_TIME:该参数用于指定一个口令被重新使用前,必须经过多少次修改。

l  PASSWORD_VERIFY_FUNCTION:设置口令复杂性校验函数。这个函数会对口令进行校验,以判断口令是否符合最低复杂程度或其他校验规则。

2.实训题

(1)

CREATE USER usera_exer IDENTIFIED BY usera DEFAULT TABLESPACE USERS QUOTA 10M ON USERS ACCOUNT  LOCK;

(2)

CREATE USER userb_exer IDENTIFIED BY userb;

(3)

GRANT CREATE SESSION TO usera_exer WITH ADMIN OPTION;

GRANT SELECT ,UPDATE ON scott.emp TO usera_exer WITH GRANT OPTION;

(4)

ALTER USER usera_exer ACCOUNT UNLOCK;

(5)

CONNECT usera_erer/usera

SELECT * FROM scott.emp;

UPDATE scott.emp SET sal=sal+100 ;

GRANT SELECT ,UPDATE ON scott.emp TO userb_exer;

(6)

REVOKE CREATE SESSION FROM usera_exer;

GRANT CREATE SESSION TO usera_exer;

(7)

REVOKE SELECT,UPDATE ON scott.emp FROM usera_exer;

GRANT SELECT ,UPDATE ON scott.emp TO usera_exer;

(8)

CREATE ROLE rolea;

CREATE ROLE roleb;

GRANT CREATE TABLE TO rolea;

GRANT INSERT,UPDATE ON scott.emp TO rolea;

GRANT CONNECT ,RESOURCE TO roleb;

(9)

GRANT rolea,roleb TO usera_exer;

(10)

ALTER USER usera_exer DEFAULT ROLE ALL EXCEPT roleb;

(11)

CREATE PROFILE pwdfile

LIMIT CONNECT_TIME 30   IDLE_TIME 10  FAILED_LOGIN_ATTEMPTS 4 PASSWORD_LIFE_TIME 20  PASSWORD_LOCK_TIME 10

 

ALTER USER usera_exer PROFILE pwdfile;

3.选择题

(1)A

(2)B

(3)A

(4)A

(5)B

(6)A

(7)D

(8)D

(9)D

(10)D

 

 

 

 

 

 

第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进行导出和导入操作之前,首先需要进行哪些准备工作?

需要首先配置资料档案库,并设置首选身份证明。

2.实训题

(1) 使用冷物理备份对数据库进行完全备份。

①  CONNECT / AS SYSDBA;

②  SHUTDOWN IMMEDIATE;

③  备份所有相关的数据库文件

在操作系统级别上复制所有的数据文件、控制文件和初始化文件等到指定位置(正常情况下,数据库处于一致性状态)。

④  STARTUP

(2)        

假定丢失了一个数据文件example01.dbf,试使用前面做过的完全备份对数据库进行恢复,并验证恢复是否成功。

①  SHUTDOWN IMMEDIATE;

②  从冷备份中拷贝example01.dbf到原始位置。

③  STARTUP

(3)        

使用热物理备份对表空间users的数据文件user01.dbf进行备份。

①  首先将数据库设置为归档日志模式。

②  alter tablespace users begin backup

③  使用操作系统命令将该表空间的数据文件user01.dbf备份

④  Alter tablespace users end backup

(4)        

假定丢失了数据文件user01.dbf,试使用前面做过的热物理备份对数据库进行恢复,并验证恢复是否成功。

①  ALTER TABLESPACE users  OFFLINE;

②  将备份的数据文件user01.dbf拷贝到原来的位置

③  RECOVER TABLESPACE users

④  ALTER TABLESPACE users ONLINE;

(5)        

分别使用三种不完全恢复的方式对数据库进行恢复操作。

参见教材P.237。

(6)        

使用EXP命令导出SCOTT用户下的所有数据库对象。

exp scott/tiger owner=scott direct=y

(7)        

创建一个用户JOHN,并使用IMP命令将SCOTT用户下的所有数据库对象导入。

imp john/pass fromuser=scott file=exporcl.dmp

(8)        

使用OMS中的导出工具完成第6题的操作。

参见教材P.245。

(9)        

使用OMS中的导入工具完成第7题的操作。

参见教材P.248。

3.选择题

(1)             D

(2)             C

(3)             B

(4)             D

(5)             D

(6)             D

(7)             C

(8)             B

(9)             C

(10)          A

(11)          B

 

第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本地命名服务具有如下优点:

l  它提供了一种更为直接的名称解析方式,不依赖于人和其他服务。

l  对网络协议基本上没有限制,可以使用所有Oracle所支持的网络协议。

l  可以利用图形界面工具方便地进行配置。

ii本地命名方式是最为常用的一种命名方式。

iii本地命名方式的配置主要包括如下步骤:

l  配置本地命名方式为首选项。

l  配置网络服务名

l  分发配置文件

l  连接到数据库

 

②i主机命名方式具有如下优点:

l  主机命名方式只需要最少的用户配置文件;

l  主机命名方式不需要使用本地名称配置文件;

l  用户在使用主机命名方式设置时,可以不需要理解连接标识符、连接描述符等基本概念。

对应地,主机命名方式也具有如下局限:

l  客户端只能使用TCP/IP协议进行连接;

l  客户端必须具有至少一种IP地址解析机制,比如DNS,或者是本地TCP/IP hosts文件;

l  不能使用Oracle 网络服务中的高级功能,比如Oracle连接管理器所提供的功能;

l  对监听器的配置有特定的要求。

  ii在连接需求十分简单的环境中,可以使用主机命名方式来代替本地命名方式。

  iii主机命名方式的配置主要步骤为:

l  配置监听器监听全局数据库名

l  配置主机命名方式为首选方式

l  建立主机名称解析环境

l  连接到数据库

(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)

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.

(1)insert into emp(empno,ename,sal,deptno,hiredate) values(1357,’oracle’,2050,20,TO_DATE(‘2002-5-10’,’YYYY-MM-DD’);

(2)select ename,empno,sal,dept.deptno,dname,loc

from emp left join dept on emp.deptno=dept.depno

(3)select ename,empno,sal,dept.deptno,dname,loc

from emp right join dept on emp.deptno=dept.deptno

(4)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 worker.ename,worker.empno,worker.sal,manager.ename,manager.empno,manager.sal from emp worker left join emp manager on worker.mgr=manager.empno

(5)select count(*) ,avg(sal) from emp group by deptno

(6)select * from emp where sal = any(select avg(sal) from emp group by deptno)

(7)select * from emp e where e.sal > (select avg(sal) from emp where deptno=e.deptno)

(8)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

(9)select * from emp  sal>any(select sal from emp where deptno=20)

(10)Select job, count(*),avg(sal) from emp group by job

(11)select deptno,job,count(*), avg(sal) from emp group by deptno,job

(12)select * from emp where (sal, nvl(comm.,0))  in (select sal,nvl(comm,0) from emp where deptno=10)

(13)select * from emp where deptno in (select deptno from emp group by deptno having count(*)>5)

(14)select * from dept where deptno not  in (select deptno from emp where sal<2000)

(15)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)

(16)select * from dept where deptno  not   in

(select deptno from emp where sal not  between 2000 and 3000)

(17)select * from emp where deptno in (select distinct deptno from emp where sal between 2000 and 3000)

(18)select detp.deptno,dname,loc from dept, emp worker,emp manager

      where dept.deptno=manager.deptno and worker.mgr=manager.empno

(19)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’

(20)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触发器执行顺序为:

Ø  如果存在,执行语句级前触发器。

Ø  对于受触发事件影响的每一个记录:

l  如果存在,执行行级前触发器;

l  执行当前记录的DML操作(触发事件);

l  如果存在,执行行级后触发器。

Ø  如果存在,执行语句级后触发器。

(8)        

DML触发器中的语句级触发器是激发触发器的SQL语句不管涉及到多少记录,触发器只执行一次,而行级触发器是激发触发器的SQL语句涉及到多少记录,触发器就执行多少次。通常,如果要获取当前操作记录的信息,需要采用行级触发器,而如果需要获取整个操作之前或操作之后的信息,可以采用语句级触发器。

(9)        

基于数据库的系统触发器是只要数据库中相应事件发生,触发器就执行,与用户没有关系;而模式级别的触发器只有特定用户操作中的特定事件发生时触发器才执行。

(10)    

PL/SQL命名块可以一次编译多次执行,可以放在服务器端由不同客户端用户调用;而匿名块只能一次性执行,不能被其他用户调用。

2.实训题

(1)

DECLARE
  CURSOR c_emp IS select * from emp;
BEGIN
   FOR v_emp IN c_emp LOOP
   DBMS_OUTPUT.PUT_LINE(v_emp.ename||' '||v_emp.empno||' '||v_emp.deptno||' '||v_emp.sal);
  END LOOP; 
END;

(2)

DECLARE
 v_emp emp%ROWTYPE;
BEGIN
 SELECT * INTO v_emp FROM EMP WHERE ename='SMITH';
 DBMS_OUTPUT.PUT_LINE(v_emp.empno||'  '||v_emp.sal||' '||v_emp.deptno);
EXCEPTION
 WHEN NO_DATA_FOUND THEN
   INSERT INTO EMP(EMPNO,ENAME,SAL,DEPTNO) VALUES(2007,'SMITH',1500,10);
 WHEN TOO_MANY_ROWS THEN
   FOR v IN (SELECT * FROM EMP WHERE ENAME='SMITH') LOOP
    DBMS_OUTPUT.PUT_LINE(v.empno||'  '||v.sal||' '||v.deptno);
   END LOOP;
END;

(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<v_lowsal  THEN
   RAISE_APPLICATION_ERROR(-20001,'THE SAL IS BEYOND!');
  END IF;
END;

3.选择题

(1)A

(2)B

(3)A、C、D

(4)A、E

(5)B、D

(6)C、E

(7)C

(8)A

(9)E

(10)A

16章 基于Oracle数据库的应用开发

1.简答题

(1)

基于Oracle数据库的应用程序开发的基本过程包括:需求分析;系统设计包括:数据库设计E-R图、数据库表创建、各个功能模块的划分等;核心代码实现(包括数据库连接)、界面实现;测试等。

(2)

基于Oracle数据库进行B/S结构应用程序开发的基本技术:熟悉B/S结构、熟悉数据库技术、熟悉B/S结构编程语言、熟悉应用服务器配置等。

 

2.实训题(参考)

 

(1)

E-R图如下:

性别

出生日期

管理读者

读者

编号

姓名

帐号

密码

权限

图书管理员

管理图书

定价

出版社

作者

图书

书名

编号

借阅

还书日期

借书日期

 

 

 

 

 

 


                                             r                               s

 

 

                           m                                                                q

 

 

 

 

                             n                                                                p

 

 

(2)

关系模式如下:

图书(编号,书名,作者,定价,出版社)

读者(编号,姓名,性别,出生日期)

图书管理员(帐号,密码,权限)

管理图书(图书编号,帐号

管理读者(读者编号,帐号

借阅(图书编号,读者编号,借书日期,还书日期)

(3)

基本表创建如下:

CREATE TABLE 图书(

编号        CHAR(10)      PRIMARY KEY,

书名        VARCHAR(30)      NOT NULL,

作者        VARCHAR(20),

定价        DECIMAL(6,2),

出版社            VARCHAR(20)

 

CREATE TABLE读者(

编号        CHAR(10)      PRIMARY KEY,

姓名        VARCHAR(10)      NOT NULL,

性别        CHAR(2),

出生日期 DATETIME

CREATE TABLE图书管理员(

帐号        VARCHAR(20)      PRIMARY KEY,

密码        VARCHAR(20)      NOT NULL,

权限        VARCHAR(10)

CREATE TABLE管理图书(

图书编号 CHAR(10),

帐号        VARCHAR(10),

PRIMARY KEY(图书编号, 帐号),

FOREIGN KEY(图书编号) REFERENCES 图书(编号),

FOREIGN KEY(帐号) REFERENCES 图书管理员(帐号)

CREATE TABLE管理读者(

读者编号 CHAR(10),

帐号        VARCHAR(10),

PRIMARY KEY(读者编号, 帐号),

FOREIGN KEY(读者编号) REFERENCES 读者(编号),

FOREIGN KEY(帐号) REFERENCES 图书管理员(帐号)

CREATE TABLE借阅(

图书编号 CHAR(10),

读者编号 CHAR(10),

借书日期 DATETIME,

还书日期 DATETIME,

PRIMARY KEY(图书编号,读者编号,借书日期),

FOREIGN KEY(图书编号) REFERENCES 图书(编号),

FOREIGN KEY(读者编号) REFERENCES 读者(编号)

(4)略。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值