Oracle 复合控制文件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle 复合控制文件
因为控制文件非常重要,所以为了防止控制文件的损坏或丢失,应用将控制文件复合。Oracle建议每个数据库应该包含两个或两个以上的控制文件。但需要注意,Oracle数据库最多可以包含8个控制文件。当复合控制文件时,为了防止磁盘损坏导致控制文件丢失或损坏。应该将控制文件分布到不同的磁盘上,如图11-1所示。
成员1成员2
成员1
成员2成员1
成员2
日志组1日志组2日志组3
磁盘1
磁盘2
图11-1 复合控制文件
如果在启动实例时使用了PFILE,在需要手动编辑文本参数文件,并修改初始化参数CONTROL_FILE,修改控制文件为复合形式。具体步骤如下:
(1)手动修改初始化参数CONTROL_FILE。
因为Oracle是通过初始化参数CONTROL_FILE来定位并打开控制文件,所以为了复合控制文件,必须手动修改初始化参数。例如:
control_files=("d:\app\Administrator\oradata\orcl\control01.ctl",
"d:\app\Administrator\oradata\orcl\control02.ctl",
"d:\app\Administrator\oradata\orcl\control03.ctl",
"e:\oradata\orcl\control01b.ctl",
"e:\oradata\orcl\control02b.ctl",
"d:\oradata\orcl\control03b.ctl")
需要注意,在编辑PFILE文件时,在D盘上的控制文件是原有控制文件,而在E盘上的控制文件为新加的控制文件,目前还不存在。
(2)关闭数据库。
修改了静态参数CONTROL_FILES后,必须先关闭Oracle数据库,然后重新启动数据库,参数设置才能生效。
(3)复制控制文件。
复制控制文件时,因为多个控制文件互为镜像,为了确保文件内容完全一致,必须关闭数据库后再复制控制文件。示例如下:
SQL> host copy d:\app\Administrator\oradata\orcl\control01.ctl e:\oradata\orcl\control01b.ctl;
已复制 1 个文件。
(4)启动数据库。
完成复制控制文件后,必须重新启动数据库,Oracle实例才会根据CONTROL_FILES 参数读取相应的控制文件,从而启用复合控制文件。启用复合控制文件后,Oracle将同时写入到所有的控制文件,但是只会读取CONTROL_FILES参数所指定的第一个控制文件。在启动实例时,可以使用PFILE参数指定PFILE文件名。
startup pfile= d:\app\Administrator\admin\orcl\pfile\init.ora
如果启动实例时使用SPFILE,在复合控制文件时需要执行ALTER SYSTEM命令修改初始化参数CONTROL_FILES。具体步骤如下:
(1)修改初始化参数CONTROL_FILES。
因为Oracle是通过该初始化参数定位并打开控件文件的,所以为了启用复合控件文件,需要使用ALTER SYSTEM语句修改该初始化参数,以便添加新的控制文件。
SQL> alter system set control_files='d:\app\Administrator\oradata\orcl\control01.ctl',
2 'd:\app\Administrator\oradata\orcl\control02.ctl',
3 'd:\app\Administrator\oradata\orcl\control03.ctl',
4 'e:\oradata\orcl\control01b.ctl',
5 'e:\oradata\orcl\control02b.ctl',
6 'e:\oradata\orcl\control03b.ctl'
7 scope=spfile;
系统已更改。
(2)关闭数据库,将已有的控制文件复制多份,修改名称后保存到不同的位置上。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host copy d:\app\Administrator\oradata\orcl\control01.ctl e:\oradata\orcl\control01b.ctl;
已复制 1 个文件。
SQL> host copy d:\app\Administrator\oradata\orcl\control02.ctl e:\oradata\orcl\control02b.ctl;
已复制 1 个文件。
SQL> host copy d:\app\Administrator\oradata\orcl\control03.ctl e:\oradata\orcl\control03b.ctl;
已复制 1 个文件。
(3)启动数据库。
现在可以重新连接到数据库,查询数据字典V$CONTROLFILE确认是否启用了控制文件CONTROL04.CTL。使用的控制文件如下:
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 376635392 bytes
Fixed Size 1333312 bytes
Variable Size 272631744 bytes
Database Buffers 96468992 bytes
Redo Buffers 6201344 bytes
数据库装载完毕。
数据库已经打开。
SQL> select name from v$controlfile;
NAME