Oracle 控制文件多元化01

控制文件的多元化

 

(1)控制文件记录了整个数据库的物理结构

(2)通过控制文件所记录的检查点来保证数据库的一致性

所以控制文件对整个oracle来说是非常重要的,如果在建库的时候只创建了一个控制文件,那么就需要控制文件的多元化来保证数据库的高可用性。

 

如果实例是通过pfile启动,先将实例关闭,然后修改pfile里面控制文件的路径,然后通过旧的控制文件去复制新控制文件,复制后新的控制文件和旧的控制文件里面内容都是一样的,最后启动实例。(对控制文件多元化的时候要保证所有的控制文件不要在同一个存储上,如果放在同一个存储上多元化就没有意义了)。

 

SQL> show parameter spfile;   --可以看到数据库启动是使用了pfile文件启动的

 

NAME      TYPE  VALUE

------------------------------------ ----------- ------------------------------

spfile      string

 

 

SQL> show parameter control;  --可以看到当前数据库只有一个控制文件

 

NAME      TYPE  VALUE

------------------------------------ ----------- ------------------------------

control_file_record_keep_time      integer  7

control_files      string  /u01/app/oracle/oradata/oradb/

 control01.ctl

 

[root@Database2 ~]# mkdir -p /disk2/oradata/oradb  --模拟出一块盘来存储控制文件

[root@Database2 ~]# chown -R oracle:dba /disk2/

 

 

SQL> shutdown immediate;  --将数据库关闭

Database closed.

Database dismounted.

ORACLE instance shut down.

 

[oracle@Database2 oradb]$ cd $ORACLE_HOME/dbs

[oracle@Database2 dbs]$ ls

hc_oradb.dat  init.ora  initoradba.ora  initoradb.ora  lkORADB  orapworadb

[oracle@Database2 dbs]$ vi initoradb.ora  --修改pfile文件里面控制文件的路径

control_files='/u01/app/oracle/oradata/oradb/control01.ctl','/disk2/oradata/oradb/control02.ctl'

 

[oracle@Database2 dbs]$ cp /u01/app/oracle/oradata/oradb/control01.ctl /disk2/oradata/oradb/control02.ctl  --控制文件多元化,创建新的控制文件

 

 

 

SQL> startup;

ORACLE instance started.

 

Total System Global Area 1068937216 bytes

Fixed Size     2260088 bytes

Variable Size   671089544 bytes

Database Buffers   390070272 bytes

Redo Buffers     5517312 bytes

Database mounted.

Database opened.

SQL> show parameter control;   --可以看到控制文件多元化成功

 

NAME      TYPE  VALUE

------------------------------------ ----------- ------------------------------

control_file_record_keep_time      integer  7

control_files      string  /u01/app/oracle/oradata/oradb/

 control01.ctl, /disk2/oradata/

 oradb/control02.ctl

 

 

一般情况下,三个控制文件就足够了,如果控制文件比较多,在往控制文件里面写入内容的时候生成检查点,或者日志切换,数据库结构发生变化,生成归档都得对控制文件产生I/O。关键还是将控制文件放在不同的存储上。

 

 

 

最后模拟一下控制文件的损坏

[oracle@Database2 dbs]$ vi /disk2/oradata/oradb/control02.ctl

SQL> startup force;

ORACLE instance started.

 

Total System Global Area 1068937216 bytes

Fixed Size     2260088 bytes

Variable Size   671089544 bytes

Database Buffers   390070272 bytes

Redo Buffers     5517312 bytes

ORA-00205: error in identifying control file, check alert log for more info

 

这个报错查看数据库的后台日志

[oracle@Database2 trace]$ tail -30f alert_oradb.log

ORACLE_BASE from environment = /u01/app/oracle

Thu May 24 10:59:16 2018

ALTER DATABASE   MOUNT

ORA-00210: cannot open the specified control file

ORA-00202: control file: '/disk2/oradata/oradb/control02.ctl'

ORA-27046: file size is not a multiple of logical block size

Additional information: 1

ORA-205 signalled during: ALTER DATABASE   MOUNT...

Thu May 24 10:59:16 2018

Checker run found 1 new persistent data failures

 

解决办法还是使用上面复制新的控制文件,如果数据库启动办不到mount状态下,查看数据库后台日志定位原因。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值