Oracle 复合控制文件

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档