最近在恢复rac(asm)到单实例数据库时,恢复过程中报了好多错误,处理过程mark一下:
1.
ORA-15077:找不到提供所需磁盘组的 ASM 实例
ORA-29701:无法连接到集群同步服务
Errorsin file /u01/app/oracle/diag/rdbms/racdb/oadb/tra
ce/oadb_ora_4300.trc:
ORA-00313:无法打开日志组 3 (用于线程 2) 的成员
ORA-00312:联机日志 3 线程 2: '+DATA/RACdb/onlinelog/group_3.265.939529809'
ORA-17503:ksfdopn: 2 未能打开文件+DATA/RACdb/onlinelog/group_3.265.939529809
ORA-15001:磁盘组 "DATA" 不存在或尚未装载
ORA-15077:找不到提供所需磁盘组的 ASM 实例
ORA-29701:无法连接到集群同步服务
WARNING:ASM communication error: op 16 state 0x40 (150)
在用rman恢复时报以上错误是由于RENAME过程中,拼写错误或者没有进行RENAME而直接open导致。
尝试clear redo组。
alter database clearunarchived logfile group 3;
alter database clearunarchived logfile group 3
ERROR at line 1:
ORA-00349: failure obtainingblock size for '+data’
居然报错。
查看状态竟然是在使用中。没有办法重新重建空间文件,执行redo目录。
验证如下:
SQL> select CHECKPOINT_CHANGE#,count(*) from V$DATAFILE_HEADER group byCHECKPOINT_CHANGE#; CHECKPOINT_CHANGE# COUNT(*) -------------------- -------------------- 148548398 8
重建控制文件
ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS'/home/oracle/control.sql' resetlogs ;
将库 shutdown immediate
修改 control.sql 脚本的内容。
把 CREATE CONTROLFILE REUSE DATABASE"OADB" RESETLOGS ARCHIVELOG
MAXLOGFILES 192
MAXLOGMEMBERS 3
MAXDATAFILES 1024
MAXINSTANCES 32
MAXLOGHISTORY 292
LOGFILE
GROUP 4 '+data' SIZE 50M BLOCKSIZE 512,
GROUP 7 '+data' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
…..
CHARACTER SET ZHS16GBK
;
修改为
LOGFILE
GROUP 4 '/oradata/red04.log' SIZE 50M BLOCKSIZE 512,
GROUP 7 '/ oradata /red01.log' SIZE 50M BLOCKSIZE 512
执行 sql>@control.sql
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 84640066 ( 在 04/26/2018 22:31:08 生成 ) 对于线程 1 是必需的
ORA-00289: 建议 :
/u01/app/oracle/product/11.2.0/db_1/dbs/archarch_1_719_939524558.dbf
ORA-00280: 更改 84640066 ( 用于线程 1) 在序列 #719 中
指定日志 :{<RET>=suggested | filename | AUTO | CANCEL}
cancel
介质恢复已取消。
SQL> alter database open resetlogs ;
alter database open resetlogs
*2
2. SQL>alter database open resetlogs ;
第 1 行出现错误 :
ORA-38856: 无法将实例 UNNAMED_INSTANCE_2 ( 重做线程 2) 标记为启用
查看相关文档如下:

解决方案如下:

添加参数
alter set "_no_recovery_through_resetlogs"=true scope=spfile;
重启数据库。
