在一般生产的环境中,重要的文件,比如三大文件,其中控制文件与日志文件,都需要创建冗余形成多路径
控制文件或者多路径日志文件,这样提高数据库的安全性。学习环境就没有必要这样做,以下是模拟创建冗余的过程:
添加控制文件成员:
1、查看目前的控制文件:
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/PROD/ora_control1.ctl
/u01/app/oracle/oradata/PROD/ora_control2.ctl
2、添加两个控制文件,形成多路径控制文件:
SQL> alter system set control_files=
2 '/u01/app/oracle/oradata/PROD/ora_control1.ctl',
3 '/u01/app/oracle/oradata/PROD/ora_control2.ctl',
4 '/u01/app/oracle/fast_recovery_area/ora_control3.ctl',
5 '/u01/app/FRA/ora_control4.ctl'
6 scope = spfile;
-------因为这个修改静态参数,所以要以scope = spfile修改,重启数据库后才能生效,在当前会话不生效。
System altered.
3、关闭数据库,系统层复制控制文件:
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
4、在系统层生产跟写在参数文件里控制文件参数值相对应的文件对象:(这个非常关键)
-----这一步操作,必须在关闭数据库的状态下进行,主要是为了关闭控制文件,避免控制文件写内容。
SQL> !cp /u01/app/oracle/oradata/PROD/ora_control1.ctl /u01/app/oracle/fast_recovery_area/ora_control3.ctl
SQL> !cp /u01/app/oracle/oradata/PROD/ora_control1.ctl /u01/app/FRA/ora_control4.ctl
添加了两个控制文件成员,就相应地添加连个控制文件的对象,这个还可以在系统层oracle用户的home目录下进行操作
如下:
[oracle@enmo ~]$ cp /u01/app/oracle/oradata/PROD/ora_control1.ctl /u01/app/oracle/fast_recovery_area/ora_control3.ctl
[oracle@enmo ~]$ cp /u01/app/oracle/oradata/PROD/ora_control1.ctl /u01/app/FRA/ora_control4.ctl
5、查看文件:
[oracle@enmo ~]$ cd /u01/app/oracle/fast_recovery_area/
[oracle@enmo fast_recovery_area]$ ls
ora_control3.ctl
[oracle@enmo ~]$ cd /u01/app/FRA/
[oracle@enmo FRA]$ ls
ora_control4.ctl
看到新控制文件成员已经创建成功。
6、打开数据库:
SQL> startup
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2257840 bytes
Variable Size 541068368 bytes
Database Buffers 289406976 bytes
Redo Buffers 2371584 bytes
Database mounted.
Database opened.
添加成功,没有发现错误,正常启动数据库。
7、再次查看控制文件:
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/PROD/ora_control1.ctl
/u01/app/oracle/oradata/PROD/ora_control2.ctl
/u01/app/oracle/fast_recovery_area/ora_control3.ctl
/u01/app/FRA/ora_control4.ctl
新的控制文件生效。
以上在添加过程中,有一些步骤是非常关键的。记得在我第一次添加控制文件成员的时候,由于先在系统层生成
控制文件成员,再修改参数文件的该静态参数,最后在启动数据库到mount状态的时候报错了,原因是控制文件
版本不一样。因为该参数是在数据库打开的状态下修改的,修改参数过程中,数据库在不断地往控制文件中写入数据库
的修改信息,这些修改信息都要注册到控制文件中才能被数据库识别生效。那一次的错误操作的教训,让我刻骨铭心。
所以记得两点:
1》先修改参数再关库。
2》先关库再在系统复制控制文件。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31392094/viewspace-2126426/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31392094/viewspace-2126426/