第3章 Oracle数据库系统结构
1.简答题
(1)
Oracle数据库体系结构由物理存储结构、逻辑存储结构和实例组成。其中物理存储结构描述了操作系统层次数据的存储与管理,包括数据文件、日志文件、重做日志文件等组成。逻辑结构描述了数据库内部数据的组织与管理,由表空间、段、区、块组成。实例是数据库运行的软件结构,由内存结构和后台进程组成。数据库运行过程中,用户的操作在内存区中进行,最终通过后台进行转化为对数据库的操作。 (2)
Oracle数据库物理结构包括数据文件、控制文件、重做日志文件、初始化参数文件、归档文件、口令文件等。在控制文件中记录了当前数据库所有的数据文件的名称与位置、重做日志文件的名称与位置,以及数据文件、重做日志文件的状态等。 (3)
Oracle数据库的逻辑存储结构分为Oracle数据块(Oracle Data Block)、区(Extent)、段(Segment)和表空间(Table space)4种。一个或多个连续的Oracle数据块构成区,一个或多个区构成段,一个或多个段构成表空间,所有表空间构成数据库。
(4)
SGA区由数据缓冲区、共享池、重做日志缓冲区、大型池、JAVA池构成;PGA区由排序区、私有SQL区以及堆栈构成。SGA区是由Oracle分配的共享内存结构,包含一个数据库实例共享的数据和控制信息。当多个用户同时连接同一个实例时,SGA区数据供多个用户共享,所以SGA区又称为共享全局区。用户对数据库的各种操作主要在SGA区中进行。该内存区随数据库实例的创建而分配,随实例的终止而释放。
PGA区是在用户进程连接数据库,创建一个会话时,由Oracle为用户分配的内存区域,保存当前用户私有的数据和控制信息,因此该区又称为私有全局区。每个服务器进程只能访问自己的PGA区,所有服务器进程PGA区总和即为实例的PGA区的大小。
(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)
当下列事件发生时,LGWR进程将重做日志缓冲区中的重做记录写入重做日志文件。 ? 用户通过COMMIT语句提交当前事务。 ? 重做日志缓冲区被写满三分之一。
? DBWR进程开始将脏缓存块写入数据文件。 ? LGWR进程超时(大约3秒),LGWR进程将启动。
3.选择题
(1) D (2) D (3) B (4) B (5) D (6) A (7) D (8) B (9) B (10) A (11) C (12) A (13) C (14) C (15) B (16) A (17) AD (18) A
第4章 案例数据库的创建与客户端的连接
实训题 (1) 略 (2) 略 (3) 略
第5章 数据库存储设置与管理
1.简答题
(1)
数据库表空间分为系统表空间和非系统表空间两类,其中非系统表空间包括撤销表空间、临时表空间和用户表空间等。
SYSTEM表空间主要用于存储数据库的数据字典、PL/SQL程序的源代码和解释代码、数据库对象的定义。撤销表空间专门进行回退信息的自动管理。临时表空间是专门进行临时段管理的表空间。用户表空间用于分离不同应用的数据,而且能够减少读取数据文件时产生的I/O冲突。 (2)
一个数据库由一个或多个表空间构成,不同的表空间用于存放不同应用的数据,表空间的大小决定了数据库的大小。一个表空间对应一个或多个数据文件,数据文件的大小决定了表空间的大小。一个数据文件只能从属于一个表空间。一个数据库对象只能存储在一个表空间中,但可以存储在该表空间所对应的一个或多个数据文件中。 (3)
数据文件中保存了数据库中的所有数据,包括数据字典以及用户数据。 (4)
控制文件保存数据库的物理结构信息,包括数据库名称、数据文件的名称与状态、重做日志文件的名称与状态等。在数据库启动时,数据库实例依赖初始化参数定位控制文件,然后根据控制文件的信息加载数据文件和重做日志文件,最后打开数据文件和重做日志文件。 (5)
重做日志文件是以重做记录的形式记录、保存用户对数据库所进行的修改操作,包括用户执行DDL、DML语句的操作。如果用户只对数据库进行查询操作,那么查询信息是不会记录到重做日志文件中的。 (6)
归档是数据库恢复及热备份的基础。只用当数据库归档模式时,才可以进行热备份和完全恢复。进行归档设置包括归档模式设置(ARCHIVELOG)、归档方式设置以及归档路径的设置等。 (7)
每个数据库至少需要两个重做日志文件,采用循环写的方式进行工作。当一个重做日志文件在进行归档时,还有另一个重做日志文件可用。当一个重做日志文件被写满后,后台进程LGWR开始写入下一个重做日志文件,即日志切换,同时产生一个“日志序列号”,并将这个号码分配给即将开始使用的重做日志文件。当所有的日志文件都写满后,LGWR进程再重新写入第一个日志文件。 (8)
采用多路复用控制文件可以避免由于一个控制文件的损坏而导致数据库无法正常启动。在数据库启动时根据一个控制文件打开数据库,在数据库运行时多路复用控制文件采用镜像的方式进行写操作,保持所有控制文件的同步。
2.实训题
(1)
CREATE TABLESPACE USERTBS1 DATAFILE 'D:\\ORACLE\\ORADATA\\ORCL\\USERTBS1.DBF' SIZE 20M EXTENT MANAGEMENT LOCAL; (2)
CREATE TABLESPACE USERTBS2 DATAFILE 'D:\\ORACLE\\ORADATA\\ORCL\\USERTBS1.DBF' SIZE 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K; (3)
ALTER DATABASE DATAFILE 'D:\\ORACLE\\ORADATA\\ORCL\\USERTBS1.DBF' AUTOEXTEND ON NEXT 5M MAXSIZE 100M;
(4)
CREATE TEMPORARY TABLESPACE TEMPTBS TEMPFILE 'D:\\ORACLE\\ORADATA\\ORCL\\TEMPTBS.DBF' SIZE 20M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16K;
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMPTBS; (5)
ALTER TABLESPACE USERTBS1 OFFLINE; ALTER TABLESPACE USERTBS1 ONLINE; (6)
DROP TABLESPACE USERTBS2 INCLUDING CONTENTS AND DATAFILES; (7)
SELECT TABLESPACE_NAME,FILE_NAME FROM DBA_DATA_FILES; (8)
ALTER TABLESPACE USERS
ADD DATAFILE ‘D:\\ORACLE\\ORADATA\\ORCL\%userdata05.dbf’ SIZE 50M’; (9)
ALTER TABLESPACE EXAMPLE
ADD DATAFILE ‘D:\\ORACLE\\ORADATA\\ORCL\\example05.dbf’ SIZE 20M’; (10)
ALTER DATABASE DATAFILE ‘D:\\ORACLE\\ORADATA\\ORCL\%userdata05.dbf’ AUTOEXTEND ON NEXT 5M MAXSIZE 100M; (11)
ALTER DATABASE DATAFILE ‘D:\\ORACLE\\ORADATA\\ORCL\\example05.dbf’ RESIZE 40M; (12)
SHUTDOWN IMMEDIATE;
在操作系统中重命名userdata05.dbf、example05.dbf分别为userdata005.dbf、example005.dbf
STARTUP MOUNT;
ALTER DATABASE RENAME FILE
‘D:\\ORACLE\\ORADATA\\ORCL\%userdata05.dbf’, ‘D:\\ORACLE\\ORADATA\\ORCL\\example05.dbf’ TO