控制文件不仅记载了数据库的物理结构(数据文件的名称和位置、重做日志的名称和位置),装载和打开数据库时也需要这些文件,而且它们还记载了日志序列号、检查点和日志历史信息,同步和恢复数据库时需要这些信息。控制文件主要记载了一下信息:
数据库名称
数据文件名称和位置
重做日志名称和位置
表空间名称
当前日志序列号
检查点信息
日志历史信息
RMAN信息
控制文件是一种较小的oracle数据库文件,尺寸一般在2M~10M之间,变化尺寸主要由永久参数和RMAN信息决定。执行CREATE DATABASE命令建立数据库时,通过设置永久参数可以设定oracle数据库最大的例程个数、最大数据文件个数、最大日志组个数、最大日志成员个数以及最大日志历史个数等信息。为了存放数据文件、日志组、日志成员、例程、日志历史等信息,控制文件需要为它们提供预留空间。这些永久参数包括:
MAXINSTANCES:用于指定可以同时访问数据库的最大例程个数
MAXDATAFILES:用于 指定oracle数据库的最大数据文件个数。
MAXLOGFILES:用于指定oracle数据库的最大日志组个数。
MAXLOGMEMBERS:用于指定每个日志组的最大日志成员个数。
MAXLOGHISTORY:用于指定控制文件可记载日志历史的最大个数。
使用RMAN执行备份操作时,RMAN备份信息会被记载到控制文件中。初始化参数control_files_record_keep_time指定了RMAN备份信息在控制文件中的保留时间,其默认值为7。
1. 使用PFILE 建立多元化控制文件
(1)手动打开PFILE文件,找到control_files,修改控制文件路径。例如:control_files=D:/DEMO/CONTROL01.CTL
(2)关闭数据库。修改了静态参数后,必须首先关闭数据库,然后重启才能生效。
(3)复制控制文件。多元化控制文件时,多个控制文件互为景象,为了确保文件内容完全一致,必须 关闭数据库后再复制控制文件。示例如下:
HOST COPY D:/DEMO/CONTROL01.CTL E:DEMO/CONTROL02.CTL
(4)启动数据库
2.使用SPFILE多元化控制文件
(1)alter system set control_file='d:/demo/control01.ctl' scope=spfile;
(2)关闭数据库。
(3)复制控制文件,好PFILE一样
(4)启动数据库
3.建立控制文件
(1)控制文件损坏,无法恢复。需要重新创建控制文件,步骤如下。
@1 修改初始化参数control_files 改变控制文件位置。
如果控制文件所在磁盘出现损坏,必须使用alter system命令改变控制文件位置。当例程处于NOMOUNT状态时,执行以下命令可以改变控制文件位置。 ALTER SYSTEM SET CONTROL_FILES= 'C:/DEMO/CONTROL01.CTL'
@2 关闭例程
@3 建立控制文件时,要求例程必须处于NOMOUNT状态。所以输入 startup nomount
@4 建立控制文件
启动例程后,就可以创建控制文件了。注意,建立控制文件必须提供正确的数据文件和重做日志清单。示例如下:
CREATE CONTROLFILE DATABASE demo NORESETLOGS
LOGFILE
GROUP 1 'D:/DEMO/REDO01.LOG' SIZE 10M,
GROUP 2 'D:/DEMO/REDO02.LOG' SIZE 10M
DATAFILE
'D:/DEMO/SYSTEM01.DBF',
'D:/DEMO/UNDOTBS01.DBF',
'D:/DEMO/SYSAUX01.DBF'
CHARACTER SET ZHS16GBK;
@5 打开数据库
@6 增加临时文件
打开数据库后,客户应用可以执行各种数据库访问操作,但如果执行排序操作,可能会显示错误信息。为了顺利执行排序操作,必须重新建立临时文件。具体命令如下:
ALTER TABLESPACE TEMP ADD TEMPFILE 'D:/DEMO/TEMP.DBF' SIZE 10M REUSE AUTOEXTEND OFF;
4. 删除控制文件就使用ALTER SYSTEM SET CONTROL_FILES= ‘’ 即可