前言: 在阅读《从零开始学 Oracle 》的时候,发现课后习题可以帮助自己回忆这一章节的内容。但是,没能找到题目的答案,于是自己总结了一份,记录于此。这里没有SQL实战,但是如果能完整地回答这些课后习题,基本就理解了Oracle的理论基础。
第一章 数据库入门
一、填空题
- E-R图的3个关键组件是 实体 entity 、属性 Attribute、关系 Relationship
- SQL语言又可以分为两大类,分别是:DML数据操纵语言、DDL数据定义语言
- 数据库管理系统是数据库与最终用户之间的接口
- Oracle数据库数据最终存储到一个或者多个物理文件中,这些文件根据其作用又可以分为3类,分别是数据文件,控制文件,日志文件。
二、选择题
字段必须具有单一属性特性,属于数据库范式的第几种?
A. 第一范式
B. 第二范式
C. 第三范式
D. 第四范式【A】1NF表明,数据库字段必须具有单一属性特性,不可再拆分。
Oracle数据库中最小的数据管理单位是:
A. 段
B. 区
C. 数据块
D. 字节【C】段用来存储具有独立存储结构的对象的所有数据,段由一个或多个区组成。区是存储分配的最小单位。数据库是最小的数据管理单位,是执行输入、输出操作的最小单位。
三、问答题
简单介绍数据库范式的作用。
降低数据冗余,使得数据库的设计具有最佳效率和性能。
简单介绍数据库管理系统的功能。
定义数据库结构
存取数据库内容
数据库的运行管理
数据库的传输
第二章 使用Oracle数据库
一、填空题
- 启动监听程序需要使用命令lsnrctl start
- 数据库的启动步骤分为3步,按顺序分别是启动数据库到NOMOUNT状态、启动数据库到MOUNT状态、启动数据库到OPEN状态。
- 关闭数据库使用命令SHOUTDOWN
二、选择题
客户端的服务命令保存在哪个配置文件中?
A. listener.ora
B. tnsnames.ora
C. oracle.ora
D. init.ora【B】服务器端的网络配置在listener.ora中,客户端的配置保存在tnsnames.ora中。
使用DBCA不能完成下列哪项工作?
A. 创建数据库
B. 删除数据库
C. 管理数据库
D. 创建数据表【D】Database Configuration Assistant主要用于数据库操作。
三、问答题
简述数据库的启动步骤
启动数据库到NOMOUNT状态
启动数据库到MOUNT状态
启动数据库到OPEN状态SQL*Plus 可以执行哪些命令?
SQL语句:用于对数据库进行操作,以 ; 号作为结尾符。
PL/SQL程序代码:PL/SQL是Oracle的过程性程序代码,用来执行过程性代码操作数据库中的信息,以 / 号作为结尾。
SQL *Plus命令:编辑、保存和运行SQL脚本或PL/SQL程序块,格式化和程序输出以及自定义PL/SQL的环境。
第三章 SQL 与 SQL*Plus
一、填空题
- SQL语言的中文全称是结构化查询语言,英文全称是Structured Query Language。
- 使用SQL语言,按其功能可以分为4类子语言,分别是数据定义语言DDL,数据查询语言DQL,数据操作语言DML,数据控制语言DCL。
- 在SQL*Plus 中, 重新连接数据库使用命令CONNECT。
- 在SQL*Plus 中, 可以用3种方式执行外部文件,分别是GET命令、STSART命令、@命令。
二、选择题
SQL语句不能完成的功能是:
A. 数据定义
B. 数据操作
C. 查询数据
D. 循环语句【D】SQL语句不能完成循环操作
在SQL Plus中显示表结构需要使用哪个指令:
A. CONN
B. DESC
C. GET
D. SET【B】CONN用于连接数据库,DESC用于查看表结构,GET命令用于执行外部文件,SET用于设置运行环境
三、问答题
简述SQL语言的使用方式。
(1)通过SQL *Plus或者Oracle SQL Developer等工具进行交互式个数据库操作,这种方式称之为交互式SQL应用。
(2)在使用C#、Java以及C语言开发应用软件是,通过将SQL嵌入到应用程序中,这种方式称为嵌入式SQL应用。简述SQL语言的编写规范。
PL/SQL保留字使用大写字母:如BEGIN、DECLARE、LOOP
内置函数使用大写字母:如SUBSTR、COUNT、TO_CHAR
预定义类型使用大写字母:如NUMBER、VARCHAR2、BOOLEAN
SQL关键字使用大写字母:如SELECT、INTO、UPDATE
数据库对象使用小写字母:如数据库表名、列名、视图名
第四章 操纵数据表
一、填空题
- 在数据库管理系统中,数据库表是一个二维表,由表行和表列组成。
- 在Oracle中,表根据其功能可以分为如下5种类型,分别是标准表,临时表,索引表,簇表,分区表。
- 在Oracle数据库中, 表空间是用来存储数据库数据的逻辑存储划分。
- 要创建Oracle标准表,使用 CREATE TABLE语句,要创建全局临时表,使用CREATE GLOBAL TEMPORARY TABLE语句。
二、问答题
简介全局临时表的作用
与标准表相比,临时表不永久保存数据,数据在会话结束或者事务提交后,自动清空临时表中数据。临时表一般用来处理临时的数据保存工作,在编写一段复杂的SQL语句时,可能需要提取一些数据缓存到一个表中,此时临时表就可以派上用场了。
简介Dual表的作用。
Dual是Oracle数据库提供的一个虚拟表,这个表存在的目的是用来构成SELECT语句的语法规则。当需要使用SELECT语句的一些功能时,比如使用SELECT获取当前用户,调用系统函数、执行计算公式等,可以使用到Dual表。
第五章 索引和约束
一、填空题
- 在Oracle数据表中,使用ROWID伪列来标识行的物理位置。
- 在Oracle中,索引根据组织结构和定义方式,可以分为如下的5类,分别是单列索引,复合索引,B树索引,位图索引,函数索引。
- 在Oracle索引中,B树索引是默认的索引。
- 修改索引使用ALTER INDEX语句。
二、选择题
约束共可以分为5类,下面拿一类不属于Oracle约束?
A. 非空约束
B. 检查约束
C. 唯一性约束
D. 表名约束【D】Oracle提供的约束有:非空约束,唯一性约束,主键约束,检查约束,外键约束
如果要指定一个列的值不能重复,应该使用下面的哪个关键字创建约束?
A. NOT NULL
B. UNIQUE
C. CHECK
D. PRIMARY KEY【B】NOT NULL表示不能为空约束;UNIQUE表示唯一性约束;CHECK表示检查约束;PRIMARY KEY表示主键约束
三、问答题
介绍索引的创建策略。
小表不需要创建索引
大表的索引创建在经常查询且结果数小于总记录数的15%的字段
大部分值不重复的列创建索引
基数大的列创建B树索引,基数小的列创建位图索引
列中有许多空值,但经常查询所有的非空值记录的列,创建索引
LONG和LONG RAW列不能创建索引
经常进行连接查询的列上创建索引
在使用CREATE INDEX语句创建查询时,将最常见的查询的列放在其他列的前面
维护索引需要开销,特别在对表进行插入和删除操作时。对于读操作多的表,索引多有好处,如果表经常更改,索引应该少点
在表中插入数据后创建索引介绍约束的创建时机。
约束是为了完成数据库数据的一致性和完整性的一种检查机制。通过在数据库表中定义约束条件,能够增强数据的完整性,比如限制某个字段不能为空,限制某个列不能出现重复值以及主外键约束等。
第六章 视图
一、填空题、
- 创建视图需要使用CREATE VIEW 语句。
- 组成视图的表叫做基础表。
- 在Oracle中,视图可以分为4类,分别是标准视图、内联视图、对象视图、物化视图。
二、选择题
下面关于视图的描述错误的是:
A. 视图的更改不会影响到基础表
B. 视图的更改会影响到基础表
C. 视图的修改会影响到引用了视图的对象的状态
D. 对视图的基表修改后,会导致视图失效【B】视图的更改不会影响到基础表
内联视图可以完成的操作不包括下列的哪一项?
A. INSERT
B. DELETE
C. SELECT
D. DROP【D】内联视图可以使用INSERT、UPDATE和DELETE对数据进行新增、修改和删除。DROP操作作用于标准视图和物化视图。
三、问答题
简述视图的作用。
视图是基于表或视图的逻辑表,与存储数据的表一样都是Oracle的方案对象,通过创建视图,可以对存储的数据进行逻辑的组合,就好像是一个展现数据的窗口,通过该窗口可以查看或改变表中的数据。
简述内联视图的使用时机。
内联视图又称为临时视图,这种视图并不存储到方案对象中,而是作为嵌套在SQL语句中的子查询而存在,临时视图经常用来处理复杂的数据查询。一般称SQL语句中的FROM子句中的子查询为临时视图。
第七章 序列和同义词
一、填空题
- 在Oracle中,可以使用CREATE SEQUENCE语句创建序列。
- 要获取序列的下一个值,需要使用NEXTVAL伪列。
- 要获取序列的当前值,需要使用CURRVAL伪列。
- 在Oracle中,同义词可以分为两种类型,分别是公有同义词和私有同义词。
二、选择题
当使用CREATE SYNONYM语句创建同义词时,默认创建的是:
A. 公有同义词
B. 私有同义词
C. 序列
D. 伪列【B】默认创建的是私有同义词,公有同义词需要加PUBLIC
如果要使序列在达到MAX VALUE值后再重新开始,则需要在创建序列时指定哪个关键字?
A. INCREMENT BY
B. CYCLE
C. NOCYCLE
D. CACHE【B】INCREMENT BY用于定义序列的步进值;CYCLE代表序列达到最大值后循环生成;NOCYCLE代表序列达到最大值后不循环;CACHE定义存放序列的内存块大小
三、问答题
比较Oracle序列与SLQ Server自增字段的不同之处。
数据序列与数据库表进行分离,使得序列具有了全局特性,这在进行SQL编程或者是PL/SQL程序设计是有时候非常有用。序列不再像自增字段那样无法控制,也就是说在编程时可以提前获知当前的序列号,避免了在程序设计时要往返查询的麻烦。
请介绍一下同义词的使用时机。
同义词的出现为Oracle解决了很多命名的问题。例如在书中介绍Oracle使用方案对数据库进行管理时,如果用户scott用户要访问hr方案下的employees表,必须要使用hr.employees这样的名称,否则系统在当前方案下找不到相应的对象时就会提示“表或视图找不到”的错误。很多时候,这样的名称会导致后期的维护出现大的问题,而通过Oracle的同义词,可以为hr方案下的部分对象编写同义词,这样其他用户就可以通过同义词来访问employees对象,而不用通过hr.employees,既方便了用户,又使得以后的维护变得更轻松。
第八章 SQL查询
一、填空题
- 在SELECT语句中,如果要查询所有的字段内容,则使用通配符* **。
- ORDER BY子句指定了排序方式,其中升序使用关键字ASC, 降序使用关键字DESC。
- 要查询不重复的字段列的数据,需要使用关键字DISTINCT。
- 在表中 ROWID 伪列记录了行的物理地址,ROWNUM 伪列是对行的动态编号。
二、选择题
现有 emp 和 dept 表,通过 deptno 进行主外键关联,如果要查询 emp 表中所有的内容,下面的连接语法哪种是正确的?
A. emp.deptno(+)=dept.deptno
B. emp.deptno(+)=dept.deptno(+)
C. emp.deptno=dept.deptno(+)
D. emp.deptno=dept.deptno【C】emp表是左表,当 + 出现在右边,表示返回左表的所有数据。
如果有一个测试环境要产生大量的随机数据,可以选择哪种连接来轻松完成?
A. 左连接
B. 右连接
C. 交叉连接
D. 自然连接【C】交叉连接是将A表中的记录行数与B表中的记录行数相乘得到的结果,交叉查询可以很方便地产生大量数据。
三、问答题
请简单介绍一下分组查询的作用。
分组查询又称为同级查询,通常用来对数据进行汇总计算,比如想知道每个部门中所有员工的最高工资,想了解每个部门的人员分布情况或者是每种类型的职位的平均薪资,这些需求可以使用SQL的分组查询来实现。
使用左连接的情况。
当需要获取连接的左边的表的所有数据时使用左连接。
第九章 操纵数据
一、填空题
- DML 的中文全称是 数据操纵语言,英文全称是 Data Manipulation Language .
- 在使用INSERT语句时,如果要插入默认值,可以使用 DEFAULT 关键字,如果要插入空值,可以使用 NULL 关键字。
- 在Oracle 10g 以后的版本中,使用可以使用RETURNING 子句来返回所有的更新结果值。
- MERGE语句用来实现对数据的合并,它实际上是一种整合了UPDATE和INSERT的特殊语句。
二、选择题
下面的对DML语句的描述中错误的是:
A. 所有的DML语句通常只能操作一个表,INSERT和MERGE可以操作多个表
B. 如果表中的字段有NOT NULL约束,在INSERT操作时需要为列指定列值
C. 在执行了DML语句后,必须显示地使用COMMIT和ROLLBACK语句进行回滚
D. Oracle会在每一条DML语句后显示地进行事务的提交【D】Oracle的事务只有使用COMMIT语句显示地提交,才会将用户所做的更改保存到数据库
如果要清空一个表中的数据,并且不进行任何日志记录,需要使用如下哪个语句?
A. MERGE
B. UPDATE
C. DELETE
D. TRUNCATE【D】TRUNCATE语句一次性删除所有的表数据,没有WHERE条件,不会产生回退日志。
三、问答题
在使用DELETE语句删除记录时,必须要注意的事项有哪些?
DELETE语句只会删除整条记录,而不能对记录的某个字段进行删除
删除一个表可能导致与其他表的引用完整性出现问题,因此必须要注意删除的顺序
DELETE语句只是删除表中的数据,并不会对整个表进行移除工作,移除表使用DROP TABLE语句
DELETE语句在删除数据时会产生回退日志信息,因此可以使用事务进行回滚恢复。简述DELETE与TRUNCATE的区别。
TRUNCATE语句一次性删除所有的表数据,它没有WHERE条件,也不会产生回退日志,因此删除速度要比DELETE语句快,但是TRUNCATE删除的数据不能恢复,因此使用该语句时应该慎重。
第十章 Oracle内置函数
一、填空题
- 在Oracle中,函数按照其功能可以分为两大类,分别是单行函数和多行函数。
- 要将英文字母字符转换为小写,可以使用LOWER函数。
- 要返回字符串的子串,可以使用SUBSTR函数。
- 在Oracle中要向另一个日期添加月份,可以使用ADD_MONTHS函数。
二、选择题
下面哪个函数不属于转换函数?
A. TO_CHAR
B. TO_DATE
C. TRUNC
D. CONVERT【C】TRUNC属于数字型函数,一般用户截取特定的小数位
下面哪个函数的作用类似于CASE语句?
A. UNLLIF
B. COALESCE
C. DECODE
D. NVL【C】DECODE根据特定的条件,实现IF-THEN-ELSE条件判断的返回值,类似于CASE语句
三、问答题
简述NAL和NAL2的区别。
NVL和NVL2函数都用来检测一个表达式是否为NULL,如果一个表达式为NULL,可以返回一个非NULL的替代值。NVL函数和NVL2函数功能类似,但是NVL2比NVL的功能更加灵活。
简述COALESCE函数的作用。
COALESCE是相对于NVL和NVL2来说最灵活的一个函数,这个函数接受一个参数值列表,COALESCE将返回列表中的第一个非NULL的值。
第十一章 PL/SQL 入门
一、填空题
- 结构化程序设计的3种基本结构分别是顺序结构、分支结构、循环结构
- PL/SQL 块的结构是以 BEGIN 和 END 之间的代码作为PL/SQL 块的主题。
- 一个包由包规范和包体两部分组成。
二、选择题
请判断下面的哪一个不是块的基本组成结构语句?
A. DECLARE
B. DEGIN
C. EXCEPTION
D. EXECUTE IMMEDIATE【D】块的BEGIN和END是必须的,此外还有DECLARE和EXCEPTION.
在PL/SQL中包含多种循环控制结构,如果知道循环的次数要使用哪种类型的循环?
A. LOOP
B. WHILE
C. FOR
D. IF【C】LOOP、WHILE、IF都是判断条件成立时执行循环。
三、问答题
PL/SQL的性能优势在哪里?
PL/SQL块可以将多条SQL语句作为一个语句块进行发送,降低了网络往返所需的开销,提升了整个应用程序的执行性能,对于命名的PL/SQL块来说,比如存储过程、触发器或者是包,这些PL/SQL块会以编译的形式存储在服务器上,并且Oracle会利用已经执行过的缓冲来优化执行的性能,因此比起单独执行SQL语句来说,性能有大幅度的提升。
为什么说PL/SQL可以模块化应用程序开发?
结构化程序讲究以模块功能和处理过程作为设计的基本原则,当编写的业务逻辑越来越复杂时,如果在一个语句块中动辄写了成千上万行代码,虽然在编写时酣畅淋漓,但是后期维护往往痛苦不堪。PL/SQL通过提供存储过程、存储函数和包3个程序单元,可以将程序的功能按其结构划分,将复杂的问题进行层层分解,自顶向下的进行程序设计,使得程序更具有模块化,大大提升程序的稳定性和可读性。
第十二章 存储子程序和包
一、填空题
- 在PL/SQL中子程序通常分为两类,分别是存储过程和存储函数
- 在创建子程序时,如果在CREATE语句中使用了OR REPLACE 子句,表示创建时将替换原有的过程定义。
- 创建过程使用CREATE PROCEDUCE语句,创建函数使用CREATE FUNCTION语句。
二、选择题
下面哪个数据字段视图包含当前登录用户所拥有的对象的源代码?
A. user_objects
B. user_source
C. user_errors
D. user_tables【B】源码放在source下面,没毛病。
定义一个函数时,如果参数既能赋一个值,也能从函数体中接收一个输出值,那么应该使用下面哪种模式的参数定义方式?
A. IN
B. OUT
C. IN OUT
D. NULL【C】IN只能赋值,OUT只能接收输出值,IN OUT是两者的结合。
三、问答题
简述函数和过程的区别。
函数与过程一样,可以接收一个或多个参数,也可以没有参数,但是需要使用RETURN子句指定一个数据类型,函数的返回数据类型必须定义在函数参数定义的后面。
包的作用是什么?
通过包提供的信息封装功能,可以将程序实现的细节隐藏起来,包的调用者只能看到包的定义规范,而不能了解包中的具体实现细节。包的组织功能使得应用程序的设计人员采用自定向下的设计方式进行设计,使得PL/SQL可以适应大型的复杂的业务逻辑开发。
第十三章 记录与集合
一、填空题
- 如果要根据一个数据库的列定义一个记录类型,可以使用 %ROWTYPE 属性来定义。
- 集合根据其功能可以分为3类,分别是索引表,嵌套表,变长数组。
- 集合类型在在使用之前必须先使用 TYPE 语句进行类型的定义。
二、选择题
如果要保存 emp 表中的所有的员工名称,并且只在PL/SQL 中使用,应该定义哪种类型?
A. 记录
B. 索引表
C. 嵌套表
D. 变长数组【B】索引表又称关联数组,一种多行单列的用来存储多个相同类型元素的数据结构。它不会存储到数据库,适合只在PL/SQL中使用。
在下面的哪种语句中可以使用嵌套表?
A. INSERT
B. ORDER BY
C. GROUP BY
D. DISTINCT【A】嵌套表适合使用在INSERT、UPDATE等语句,不适合WHERE、ORDER BY、GROUP BY、DISTINCT等语句。
三、问答题
简述记录类型的作用。
记录类型的结构就好像是一个单行结构的表定义,它提供了一种较高层次的同时操作多个标量类型的能力,使得PL/SQL代码更加具有自我描述性。
简述集合类型的作用。
记录用于管理单行多列的数据结构,而集合则用来管理多行单列的数据结构。集合类似于高级语言中的数组,集合中的元素可以排序也可以未
第十四章 触发器和游标
一、填空题
- 根据触发器的触发时机,触发器一般分为4类,分别是DML触发器、DDL触发器、系统触发器和INSTEAD OF触发器。
- 如果要使用行级触发器,在创建触发器时,需要制定FOR EACH ROW选项。
- 在触发器中可以使用 : NEW 谓词记录获取新增的记录,使用 : OLD 谓词记录获取原始记录。
二、选择题
替代触发器只能在下面的哪个数据库对象或者是操作中定义?
A. 表
B. 视图
C. 数据库启动
D. 创建数据表【B】
要判断游标中 FETCH 到的行的记录数,应该使用哪个游标属性?
A. %FOUND
B. %ISOPEN
C. %NOTFOUND
D. %ROWCOUNT【D】
三、问答题
触发器的作用是什么?
监控数据库表的变更:在对数据库表进行INSERT、UPDATE或者DELETE操作时,通过触发器可以验证数据的正确性,进行完整性约束检查或者是记录日志。
自动数据库维护:通过为数据库系统定义系统级的触发器,可以在数据库启动或者退出时,进行数据库的维护清理工作。
控制数据库管理任务:通过定义DDL语句触发器,可以添加、修改或删除数据库对象记录日志或进行安全性管理。请简要介绍游标的操作步骤。
- 定义游标
- 打卡游标
- 提取游标数据
- 关闭游标
第十五章 数据库安全性管理
一、填空题
- 在Oracle中,用户根据其权限可以分为两类,一类是 对象权限,具有自己对象的所有权限;一类是系统权限,这类用户具有DBA管理权限。
- 要在Oracle中创建用户,可以使用CREATE USER语句。
- 函数USER可以返回当前连接的用户名。
- 在Oracle中,通过为用户分配系统权限 ,可以让用户对Oracle数据库对象进行操作。
二、选择题
通过下面的哪个数据字典视图可以查看角色所具有的系统权限?
A. DBA_ROLES
B. ROLE_ROLE_PPRIVS
C. DBA_TAB_PRIVS
D. ROLE_SYS_PRIVS【D】
下面哪个权限不属于对象权限?
A. ALTER
B. DELETE
C. EXECUTE
D. CREATE TYPE【D】
三、问答题
请简单介绍方案与用户之间的区别。
用户是Oracle进行身份验证的一个数据库对象,客户端要成功地进入Oracle进行数据库操作,必须提供正确的用户名和密码。方案是用户所拥有的对象的集合,方案对象就是用户创建的对象。如scott方案对象,就是scott用户所拥有的对象。在Oracle中,用户与方案是一一对应的关系,而且一般用户名就是方案名。
权限与角色具有什么关系?
权限给用户一种行使Oracle数据库操作的权利,只有分配了特定的权限,用户才能进行一系列的操作,否则Oracle会抛出权利不足的错误消息。角色的引入可以简化权限的管理过程。
第十六章 数据库空间管理
一、填空题
- 表空间是数据库存储的逻辑单位,表空间由 段,区 和 块组成。
- 表空间分为两类,一类是系统表空间,一类是用户表空间。
- 表空间的管理方式分为两种,一种是数据字典管理方式,另一种是本地方式。
二、选择题
下面哪种类型不是表空间类型?
A. 系统表空间
B. 特殊表空间
C. 临时表空间
D. UNDO表空间【B】表空间分四种:系统表空间,临时表空间,UNDO表空间,大文件表空间。
下面的那个数据字典视图可以查询表空间的使用状态?
A. DBA_TABLESPACES
B. DBA_DATA_FILES
C. DBA_FREE_SPACE
D. DBA_TABLES【A】DBA_TABLESPACES用来查看当前表空间的信息;DBA_FREE_SPACE用来查看表空间的空余信息。
三、问答题
表空间的作用是什么?
在Oracle中,数据库数据最终存储为一系列的文件,Oracle出于跨平台的考虑,数据库对象实际上不直接对文件进行操作,而是抽象出了一个逻辑的层,这个层就是表空间。
如何创建UNDO表空间?
使用CREATE UNDO TABLESPACE 可以创建UNDO表空间。
第十七章 备份和恢复数据库
一、填空题
- 在Oracle中,备份和恢复根据操作难易度和需求可以分为3类,分别是脱机备份与恢复,联机备份与恢复 和 逻辑备份与恢复。
- 用于逻辑备份与恢复可以使用数据泵,这是两个服务端的程序,分别是 expdp 和 impdp
- 要获取进行备份的控制文件的列表,可以查询v$controlfile 数据字典视图。
二、选择题
下列关于数据泵的描述错误的是?
A. 数据泵是服务器端的程序
B. 数据泵可以直接备份到本地客户端文件夹
C. 使用数据泵必须要创建Oracle目录
D. 备份用户必须具有目录的写入权限【B】
要进行联机热备份,必须进入数据库处理归档日志模式,归档模式要在数据库的什么模式下设置?
A. OPEN
B. UNMOUNT
C. MOUNT
D. CLOSED【C】
三、问答题
什么是归档模式?
在非归档模式下,Oracle实例会联机重做日志组当做一个存储事务信息的循环缓冲区,在写满第一个日志文件后,开始写第二个,直到所有的日志文件写满为止。一旦最后一个联机重做日志文件也写满,日志写进程就开始重写第一个重做日志文件。而当以ARCHIVELOG模式运行时,后台进程在开始重写每一个重做日志文件之前,对日志进行复制归档,将这些归档的重做日志文件写入一个磁盘设备中。
数据库的启动顺序是什么?
- 读取数据库参数文件
- 读取所有的控制文件
- 读取所有的数据文件
- 读取所有的联机重做日志文件