ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 控制文件维护(四)

控制文件维护(四)

原创 Linux操作系统 作者:pingley 时间:2012-03-04 16:02:06 0 删除 编辑
控制文件维护(四)
恢复控制文件:
当你发现其中一个控制文件已经损坏的时候。可以使用备份的或者其他副本控制文件来恢复那个损坏的控制文件。
1、先关闭数据库。
2、从备份的或者其他控制文件副本恢复损坏的控制文件。
3、重启数据库。
SQL> select name from V$controlfile;
NAME
--------------------
/opt/oracle11g/orada
ta/oracl/control.ctl
/opt/oracle11g/orada
ta/oracl/control02.c
tl
/home/oracle/backup/
control03.ctl
假如控制文件/opt/oracle11g/oradata/oracl/control02.ctl已经损坏了。
先关闭数据库。
SQL> shutdown abort
在操作系统上进行下面的操作:
先找到备份的控制文件。
[oracle@zeng backup]$ ll control.bk
-rw-r-----. 1 oracle oinstall 9748480 Mar  3 22:36 control.bk
使用备份的控制文件覆盖损坏的控制文件,并确定新的控制文件的状态。
[oracle@zeng backup]$ cp control.bk /opt/oracle11g/oradata/oracl/control02.ctl
[oracle@zeng backup]$ ll /opt/oracle11g/oradata/oracl/control02.ctl 
-rw-r-----. 1 oracle oinstall 9748480 Mar  4 15:17 /opt/oracle11g/oradata/oracl/control02.ctl
现在可以重启数据库了。
SQL> startup
ORACLE instance started.
Total System Global Area  418484224 bytes
Fixed Size                  1336932 bytes
Variable Size             222300572 bytes
Database Buffers          188743680 bytes
Redo Buffers                6103040 bytes
ORA-00214: control file '/opt/oracle11g/oradata/oracl/control.ctl' version 2370
inconsistent with file '/opt/oracle11g/oradata/oracl/control02.ctl' version
2298
哎,原来我备份的控制文件没有与时俱进,里面的内容旧了。那我们就用其他没有损坏的控制文件副本来恢复吧。先关闭实例。
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
用其他控制文件副本来恢复损坏的控制文件。
[oracle@zeng ~]$ cd /opt/oracle11g/oradata/oracl
[oracle@zeng oracl]$ cp -i control.ctl control02.ctl
cp: overwrite `control02.ctl'? y
重启数据库,一切ok了。
SQL> startup
ORACLE instance started.
Total System Global Area  418484224 bytes
Fixed Size                  1336932 bytes
Variable Size             222300572 bytes
Database Buffers          188743680 bytes
Redo Buffers                6103040 bytes
Database mounted.
Database opened.
SQL> select name from V$controlfile;     
NAME
------------------------------------------
/opt/oracle11g/oradata/oracl/control.ctl
/opt/oracle11g/oradata/oracl/control02.ctl
/home/oracle/backup/control03.ctl
还有一种更糟糕的情况就是,如果某个控制文件所在的磁盘彻底over了。可以采用两种方法来解决。
第一种:在那个坏掉的磁盘中的控制文件我不要了。这意味着数据库维护的控制文件就少了一份。
1、先关闭数据库。
2、重启到nomount状态。
3、从spfile创建pfile,关闭数据库。
4、在操作系统上编辑刚才生成的pfile,把在坏掉的磁盘中的那条控制文件项目从control_files删除掉。
5、用刚才编辑过的pfile启动数据库到nomount状态,从pfile创建spfile。关闭数据库。
6、用刚才创建的spfile重启数据库。
第二种:数据库维护的控制文件份数不能减少。
1、先关闭数据库。
2、用其他控制文件副本或者备份,在其他位置恢复一个控制文件。
2、重启到nomount状态。
3、从spfile创建pfile,关闭数据库。
4、在操作系统上编辑刚才生成的pfile,把在坏掉的磁盘中的那条控制文件项目用第二步中恢复的控制
文件项目代替,这样就可以保证数据库维护的控制文件份数没有减少。
5、用刚才编辑过的pfile启动数据库到nomount状态,从pfile创建spfile。关闭数据库。
6、用刚才创建的spfile重启数据库。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26110315/viewspace-717648/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    169
  • 访问量
    715726