前期rman恢复都很顺利,但是recover的时候有问题报少归档文件,无法RECOVER,
然后alter database open resetlogs继续报错,报ORA-03113: end-of-file on communication channel
期间删除了REDO,重建了REDO,但是依然没有解决问题。
而且报ORA-03113: end-of-file on communication channel的错误,后面并没有ID信息的提示。
后来去查看init.ora文件,发现与源库对比少了DG的配置参数,把dg的配置参数primary的部分复制到目标机init.ora文件里面,然后用init.ora文件以mount级别启动数据库,然后alter database open resetlogs,数据库打开了。
总结:
看来只报ORA-03113: end-of-file on communication channel,有可能就是参数文件错误了。
----------------------------------------------------------------------------------
另外附一份关于REDO全部丢失,没有备份,如何操作打开库。
----------------------------------------------------------------------------------
1.故障环境模拟
首先查看一下数据字典里的日志文件内容
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
3 ONLINE /u01/app/oracle/oradata/test1/redo03.log NO
2 ONLINE /u01/app/oracle/oradata/test1/redo02.log NO
1 ONLINE /u01/app/oracle/oradata/test1/redo01.log NO
4 STANDBY /u01/app/oracle/oradata/test1/redo04.log NO
5 STANDBY /u01/app/oracle/oradata/test1/redo05.log NO
6 STANDBY /u01/app/oracle/oradata/test1/redo06.log NO
7 STANDBY /u01/app/oracle/oradata/test1/redo07.log
把REDO文件全部移走
[root@ora_test01 test1]# pwd
/u01/app/oracle/oradata/test1
[root@ora_test01 test1]# ls
control01.ctl redo01.log redo02.log redo03.log redo04.log redo05.log redo06.log redo07.log sysaux01.dbf system01.dbf temp01.dbf undotbs01.dbf users01.dbf
[root@ora_test01 test1]# mv redo* /ora_move/
在服务重启数据库
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 780824576 bytes
Fixed Size 2232432 bytes
Variable Size 482348944 bytes
Database Buffers 289406976 bytes
Redo Buffers 6836224 bytes
Database mounted.
ORA-03113: end-of-file on communication channel
Process ID: 2706
Session ID: 191 Serial number: 3
这就报错了
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01139: RESETLOGS option only valid after an incomplete database recovery
2.故障处理流程
手动重建REDO
SQL> alter database drop logfile group 4;
Database altered.
SQL> alter database drop logfile group 5;
Database altered.
SQL> alter database drop logfile group 6;
Database altered.
SQL> alter database drop logfile group 7;
Database altered.
SQL> alter database add logfile group 4 '/u01/app/redo4.log' size 50m;
Database altered.
SQL> alter database add logfile group 5 '/u01/app/redo5.log' size 50m;
Database altered.
SQL> alter database add logfile group 6 '/u01/app/redo6.log' size 50m;
Database altered.
这里吧standby的REDO删除,重建正常的,当然你可以重建standby的,这个无所谓,只为了下面复制的方面,因为REDO最少两个,所以下面在操作系统级别复制3分REDO,
[root@ora_test01 app]# cp -p redo4.log redo1.log
[root@ora_test01 app]# cp -p redo5.log redo2.log
[root@ora_test01 app]# cp -p redo6.log redo3.log
然后 更改日志文件位置
SQL> alter database rename file '/u01/app/oracle/oradata/test1/redo01.log' to '/u01/app/redo1.log' ;
Database altered.
SQL> alter database rename file '/u01/app/oracle/oradata/test1/redo02.log' to '/u01/app/redo2.log' ;
Database altered.
SQL> alter database rename file '/u01/app/oracle/oradata/test1/redo03.log' to '/u01/app/redo3.log' ;
Database altered.
继续强制打开,依然报错,看来还需要recover一下。
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01139: RESETLOGS option only valid after an incomplete database recovery
当还原的时候,提示不需要还原。
SQL> recover database;
ORA-00283: recovery session canceled due to errors
ORA-00264: no recovery required
那就强制还原吧,首先设置两个参数为true,这步骤最好做一下。
SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile ;
System altered.
SQL> alter system set "_allow_terminal_recovery_corruption"=true scope=spfile ;
System altered.
重启数据库
SQL> shutdown immediate ;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 780824576 bytes
Fixed Size 2232432 bytes
Variable Size 482348944 bytes
Database Buffers 289406976 bytes
Redo Buffers 6836224 bytes
Database mounted.
开始强制还原
SQL> recover database until cancel;
Media recovery complete.
然后打开库
SQL> alter database open resetlogs ;
Database altered.
成功。
最后把两个参数还原回去
SQL> alter system set "_allow_resetlogs_corruption"=false scope=spfile ;
System altered.
SQL>
SQL> alter system set "_allow_terminal_recovery_corruption"=false scope=spfile ;
System altered.
重启库,测试完成。
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 780824576 bytes
Fixed Size 2232432 bytes
Variable Size 482348944 bytes
Database Buffers 289406976 bytes
Redo Buffers 6836224 bytes
Database mounted.
Database opened.
3.总结
本次操作之适用于REDO丢掉没备份,没有归档,无法打开库的情况。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28546804/viewspace-1067592/
,如需转载,请注明出处,否则将追究法律责任。