龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Oracle 技术 >

Oracle数据库中各种类型的文件损坏与修复过程详解(1)(2)

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
5.损坏全部联机日志 (1)故障模拟 删除日志文件:rm /u02/oradata/dbnms/*.log 关闭数据库:shutdown immediate; 启动数据库:startup; Databasemounted. ORA-00313:openfailedfo

5.损坏全部联机日志

(1)故障模拟

删除日志文件:rm /u02/oradata/dbnms/*.log

关闭数据库:shutdown immediate;

启动数据库:startup;

  1. Database mounted.   
  2.  
  3. ORA-00313: open failed for members of log group 1 of thread 1   
  4.  
  5. ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo11.log'   
  6.  
  7. ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo21.log'   
  8.  
  9. ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo01.log'  

(2)恢复步骤

  1. shutdown immediate;   
  2.  
  3. create pfile from spfile;   
  4.  
  5. cd $ORACLE_HOME/dbs   
  6.  
  7. vi initdbnms.ora  

加一个参数:_allow_resetlogs_corruption=true

  1. create spfile from pfile;   
  2.  
  3. startup;   
  4.  
  5. Database mounted.   
  6.  
  7. ORA-00313: open failed for members of log group 1 of thread 1   
  8.  
  9. ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo11.log'   
  10.  
  11. ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo21.log'   
  12.  
  13. ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo01.log'   
  14.  
  15. recover database until cancel;   
  16.  
  17. alter database open resetlogs;  

同步catalog:

  1. rman target sys@dbnms catalog rmanuser@cata   
  2.  
  3. reset database;   
  4.  
  5. new incarnation of database registered in recovery catalog   
  6.  
  7. starting full resync of recovery catalog   
  8.  
  9. full resync complete  

做一个full备份:

  1. /home/oracle/dbbat/backup_full.sh 

恢复成功

6.损坏一个控制文件

(1)故障模拟

删除控制文件:rm /u02/oradata/dbnms/control01.ctl

关闭数据库:shutdown immediate;

  1. ORA-00210: cannot open the specified controlfile   
  2.  
  3. ORA-00202: controlfile: '/u02/oradata/dbnms/control01.ctl'   
  4.  
  5. ORA-27041: unable to open file   
  6.  
  7. Linux Error: 2: No such file or directory   
  8.  
  9. Additional information: 3  

(2)恢复步骤

拷贝一个好的控制文件:

  1. cp control02.ctl control01.ctl   
  2.  
  3. shutdown immediate;   
  4.  
  5. startup;   
  6.  
  7. Database mounted.   
  8.  
  9. ORA-01122: database file 1 failed verification check   
  10.  
  11. ORA-01110: data file 1: '/u02/oradata/dbnms/system01.dbf'   
  12.  
  13. ORA-01207: file is more recent than controlfile - old controlfile   
  14.  
  15. rman target sys@dbnms catalog rmanuser@cata   
  16.  
  17. run{   
  18.  
  19. allocate channel c1 type disk;   
  20.  
  21. restore database;   
  22.  
  23. recover database;   
  24.  
  25. sql 'alter database open';   
  26.  
  27. release channel c1;   
  28.  
  29. }   
  30.  
  31. RMAN-00571: ===========================================================   
  32.  
  33. RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============   
  34.  
  35. RMAN-00571: ===========================================================   
  36.  
  37. RMAN-03009: failure of sql command on default channel at 09/08/2005 17:29:04   
  38.  
  39. RMAN-11003: failure during parse/execution of SQL statement: alter database open   
  40.  
  41. ORA-00322: log 3 of thread 1 is not current copy   
  42.  
  43. ORA-00312: online log 3 thread 1: '/u02/oradata/dbnms/redo03.log'   
  44.  
  45. ORA-00312: online log 3 thread 1: '/u02/oradata/dbnms/redo13.log'   
  46.  
  47. ORA-00312: online log 3 thread 1: '/u02/oradata/dbnms/redo23.log'   
  48.  
  49. alter database clear unarchived logfile group 3;   
  50.  
  51. alter database open;  

恢复成功。

7.损坏全部控制文件

(1)故障模拟

删除控制文件:rm /u02/oradata/dbnms/control01.ctl

关闭数据库:shutdown immediate;

  1. ORA-00210: cannot open the specified controlfile   
  2.  
  3. ORA-00202: controlfile: '/u02/oradata/dbnms/control01.ctl'   
  4.  
  5. ORA-27041: unable to open file   
  6.  
  7. Linux Error: 2: No such file or directory   
  8.  
  9. Additional information: 3  

(2)恢复步骤

  1. shutdown abort;   
  2.  
  3. startup nomount;   
  4.  
  5. rman target sys catalog rmanuser@cata   
  6.  
  7. run{   
  8.  
  9. allocate channel c1 type disk;   
  10.  
  11. restore controlfile;   
  12.  
  13. restore database;   
  14.  
  15. sql 'alter database mount';   
  16.  
  17. recover database;   
  18.  
  19. sql 'alter database open resetlogs';   
  20.  
  21. release channel c1;   
  22.  
  23. }   
  24.  
  25. RMAN-00571: ===========================================================   
  26.  
  27. RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============   
  28.  
  29. RMAN-00571: ===========================================================   
  30.  
  31. RMAN-03002: failure of recover command at 09/08/2005 17:43:31   
  32.  
  33. RMAN-06054: media recovery requesting unknown log: thread 1 seq 9 lowscn 670233   
  34.  
  35. alter database open resetlogs;  

做一个full备份:

  1. /home/oracle/dbbat/backup_full.sh 

恢复成功

8.损坏临时数据文件

(1)故障模拟

删除临时数据文件:rm /u02/oradata/dbnms/temp01.dbf

关闭数据库:shutdown immediate;

启动数据库:startup;

(2)恢复步骤

  1. alter database tempfile '/u02/oradata/dbnms/temp01.dbf' drop;   
  2.  
  3. ERROR at line 1:   
  4.  
  5. ORA-01516: nonexistent log file, datafile, or tempfile   
  6.  
  7. "/u02/oradata/dbnms/temp01.dbf"   
  8.  
  9. alter tablespace temp add tempfile '/u02/oradata/dbnms/temp01.dbf' size 50M autoextend on next 5M maxsize unlimited;  

恢复成功

9.损坏spfile参数文件

(1)故障模拟

删除spfile文件:rm $ORACLE_HOME/dbs/spfiledbnms.ora

关闭数据库:shutdown immediate;

启动数据库:startup;

(2)恢复步骤

  1. startup nomount;   
  2.  
  3. rman target sys catalog rmanuser@cata   
  4.  
  5. restore spfile;   
  6.  
  7. shutdown immediate;   
  8.  
  9. startup;  

恢复成功

10.损坏全部文件(包括全部数据文件、控制文件、临时数据文件、联机日志文件)

(1)故障模拟

删除全部文件:rm /u02/oradata/dbnms/*

关闭数据库:shutdown immediate;

  1. ORA-03113: end-of-file on communication channel 

(2)恢复步骤

  1. sqlplus sys as sysdba   
  2.  
  3. startup nomount;   
  4.  
  5. rman target sys catalog rmanuser@cata  

还原控制文件:restore controlfile;

还原数据库:restore database;

mount 数据库:alter database mount;

恢复数据库:recover database;

  1. RMAN-00571: ===========================================================   
  2.  
  3. RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============   
  4.  
  5. RMAN-00571: ===========================================================   
  6.  
  7. RMAN-03002: failure of recover command at 09/09/2005 10:33:13   
  8.  
  9. RMAN-06054: media recovery requesting unknown log: thread 1 seq 19 lowscn 718284  

用resetlogs方式打开数据库:alter database open resetlogs;

  1. database opened   
  2.  
  3. new incarnation of database registered in recovery catalog   
  4.  
  5. starting full resync of recovery catalog   
  6.  
  7. full resync complete  

重建临时文件:

  1. sqlplus sys as sysdba   
  2.  
  3. alter database tempfile '/u02/oradata/dbnms/temp01.dbf' drop;   
  4.  
  5. ERROR at line 1:   
  6.  
  7. ORA-01516: nonexistent log file, datafile, or tempfile   
  8.  
  9. "/u02/oradata/dbnms/temp01.dbf"   
  10.  
  11. alter tablespace temp add tempfile '/u02/oradata/dbnms/temp01.dbf' size 50M autoextend on next 5M maxsize unlimited;  

执行一次全库备份:/home/oracle/dbbat/backup_full.sh,恢复成功。

关于Oracle数据库损坏文件的修复方法就就介绍到这里了,希望本次的介绍能够带给您一些收获吧!

精彩图集

赞助商链接