理论教育 Oracle数据库管理与开发:控制文件的备份、恢复与重新创建

Oracle数据库管理与开发:控制文件的备份、恢复与重新创建

时间:2023-10-30 理论教育 版权反馈
【摘要】:恢复控制文件当Oracle数据库的一个或所有控制文件不可访问时,实例会立即关闭。②如果所有控制文件均丢失或损坏,则必须使用控制文件备份恢复,或者重新创建新的控制文件。这里不再深入讨论怎样从备份恢复控制文件,有关这方面的内容请查阅Oracle文档,或者Oracle数据库备份和恢复方面的书籍。如果数据库现有的控制文件全部损坏,或者是需要修改数据库名称时,则可以执行CREATE CONTROLFILE命令重新创建控制文件。

Oracle数据库管理与开发:控制文件的备份、恢复与重新创建

(1)备份控制文件

在Oracle数据库运行期间,执行ALTER DATABASE BACKUP CONTROLFILE语句可以备份控制文件。该语句有两个选项,一个选项的语法如下:

它把控制文件备份到指定的文件,该文件实际上是现有控制文件的副本,因此是二进制格式。

另一个选项的语法如下:

它把控制文件备份到一个跟踪文件,跟踪文件不是二进制格式的控制文件副本,而是用于重新创建控制文件的SQL语句,它是文本格式。跟踪文件的具体存储路径和名称记录在数据库的警告日志文件内。例如,用户在执行该语句后,在数据库警告日志文件的尾部可以看到以下一段文字,它说明该语句的执行时间,以及跟踪文件的存储路径和名称。打开该文件即可看到其中的注释和SQL语句,本节的“重新创建控制文件”部分会调用这些语句。

在管理员执行以下操作导致数据库物理结构发生改变后,应立即重新备份控制文件:

①增加、删除或者重命名、移动数据文件。

②增加或删除表空间,或者改变表空间的读/写状态。

③添加或删除联机重做日志文件或组。

(2)恢复控制文件

当Oracle数据库的一个或所有控制文件不可访问时,实例会立即关闭。如要恢复控制文件,可分为以下两种情况。

①如果只是多路存储控制文件的一个副本丢失或损坏,这时只需把多路存储控制文件的其他副本复制到丢失或损坏的控制文件处,或者修改初始化参数CONTROL_FILES,使其不再指向损坏的控制文件,这样就可以重新启动实例。

②如果所有控制文件均丢失或损坏,则必须使用控制文件备份恢复,或者重新创建新的控制文件。这里不再深入讨论怎样从备份恢复控制文件,有关这方面的内容请查阅Oracle文档,或者Oracle数据库备份和恢复方面的书籍

(3)重新创建控制文件

执行CREATE DATABASE语句创建数据库时,它会根据初始化参数CONTROL_FILES的设置,在指定位置创建出最初的控制文件。如果数据库现有的控制文件全部损坏,或者是需要修改数据库名称时,则可以执行CREATE CONTROLFILE命令重新创建控制文件。在实际工作中需要重新创建控制文件时,为安全起见,在创建之前应该备份数据库的所有数据文件和日志文件。

下面结合本节前面备份控制文件时创建的跟踪文件内容,说明怎样重新创建控制文件。

打开前面创建的跟踪文件,会看到下面一组注释和语句(黑体部分),在SQL∗Plus内可以直接执行它们。

这组语句说明了重新创建控制文件、打开数据库的实际操作步骤。

①把实例启动到NOMOUT状态,准备创建控制文件。

②调用CREATE CONTROLFILE语句创建控制文件,并装载数据库。该语句中各选项的作用如下。(www.daowen.com)

a.REUSE:指出当存在同名控制文件时,覆盖它们,无此选项而又存在同名文件时将导致语句执行失败。

b.DATABASE:指出数据库名称,它应与CREATE DATABASE语句中的数据库名称相同。需要对数据库改名时,则使用SET DATABASE指出新的名称。

c.NORESETLOGS:如果数据库的所有联机重做日志文件完整无损,则可以使用NORESETLOGS选项,要求Oracle重复使用现有的重做日志。但是,如果重做日志受损或者丢失,则需要使用RESETLOGS选项,要求Oracle创建新的重做日志文件,或者重新初始化现已受损的重做日志文件。

d.NOARCHIVELOG:指出数据库运行在非归档模式,如果需要使数据库运行在归档模式,则使用ARCHIVELOG选项。

e.MAXLOGFILES:指出数据库内最多可创建多少个联机重做日志文件组。

f.MAXLOGMEMBERS:指出数据库的每组联机重做日志中最多可创建多少个日志文件成员。

g.MAXLOGHISTORY:数据库运行在归档模式时才需要设置该选项,它决定控制文件中为归档重做日志文件名称分配的空间。

h.MAXDATAFILES:决定控制文件中的数据文件记录部分最初保留的空间大小。一个数据库最多可创建的数据文件数量由该参数和初始化参数DB_FILES共同决定,当添加的数据文件数量大于MAXDATAFILES,而小于DB_FILES时,Oracle将扩展控制文件。

i.MAXINSTANCES:指出该数据库最多可被多少个实例装载或打开。

j.LOGFILE:指出数据库所有重做日志组的所有成员。

k.DATAFILE:指出数据库的所有数据文件。该子句中不能包含只读表空间的数据文件和临时数据文件,这些类型的文件可以在以后添加到数据库。

l.CHARACTER SET:设置数据库的字符集。

CREATE CONTROLFILE语句中的MAXLOGFILES、MAXLOGMEMBERS、MAXDATAFILES、MAXINSTANCES、MAXLOGHISTORY参数决定控制文件内相应记录部分可存储的记录总数,可以对照本节前面对v controlfile_record_section的查询结果加以理解。

③恢复数据库。如果数据库处于不一致状态(用SHUTDOWN ABORT命令关闭数据库),或者数据文件是从备份恢复而来的,则需要执行RECOVER DATABASE命令恢复数据库。

④打开数据库。在成功创建控制文件之后,Oracle数据库已自动进入MOUNT状态,所以这时可以直接打开数据库。

⑤添加只读数据文件和临时文件,如果需要,再添加只读表空间的数据文件和临时文件即可。

在跟踪文件的下半部分,还有一组SQL语句,它们在创建控制文件时使用的是RESETLOGS选项。如果使用RESETLOGS,在执行第③步和第④步时应调用命令和语句为以下两条:

实际应用中,建议在重新创建控制文件之后立即关闭数据库,完整复制数据库文件加以备份。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈