刚同步好没多久的dg备库,过两天查看同步状态发现备库数据不同步,重新开启同步也不能正常同步。
查看alert日志,查看报错如下:
MRP0: Background Media Recovery terminated with error 1111
Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\ris\ris\trace\ris_pr00_2546900.trc:
ORA-01111: 数据文件 11 名称未知 - 请重命名以更正文件
ORA-01110: 数据文件 11: 'D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\UNNAMED00011'
ORA-01157: 无法标识/锁定数据文件 11 - 请参阅 DBWR 跟踪文件
ORA-01111: 数据文件 11 名称未知 - 请重命名以更正文件
ORA-01110: 数据文件 11: 'D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\UNNAMED00011'
主库查看11号数据文件是什么,发现是dg同步好后新创建的表空间。遂联想到standby_file_management参数,查看发现果然该参数值为MANUAL
找到原因后即可开始处理故障,处理方法无非就是重新同步整库,或者重命名数据文件。
这个库虽然数据量不大,因为没处理过类似故障,这里还是用重命名的方法处理一下。
1.查看哪些文件需要处理
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------
X:\ORADATA\RIS\SYSTEM01.DBF
X:\ORADATA\RIS\SYSAUX01.DBF
X:\ORADATA\RIS\UNDOTBS01.DBF
X:\ORADATA\RIS\USERS01.DBF
X:\ORADATA\RIS\PACS01.DBF
X:\ORADATA\RIS\RIS01.DBF
X:\ORADATA\RIS\RISINDEX01.DBF
X:\ORADATA\RIS\OGG.DBF
X:\ORADATA\RIS\PACS02.DBF
X:\ORADATA\RIS\PACS03.DBF
D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\UNNAMED00011
可以看到最后一个数据文件需要处理,数据库中该文件号为11#
也可以用这个sql查看:
SQL> select * from v$recover_file where error like '%FILE%';
2.重命名数据文件
dg备库重命名文件的语法和普通rename好像不太一样,百度后查到如下语法。
SQL> alter database create datafile'D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\UNNAMED00011' as'X:\ORADATA\RIS\ZBX.DBF';
数据库已更改。
修改完成后查看数据文件:
SQL> select * from v$recover_file where error like '%FILE%';
未选定行
SQL> select name from v$datafile;
NAME
-------------------------------------------------
X:\ORADATA\RIS\SYSTEM01.DBF
X:\ORADATA\RIS\SYSAUX01.DBF
X:\ORADATA\RIS\UNDOTBS01.DBF
X:\ORADATA\RIS\USERS01.DBF
X:\ORADATA\RIS\PACS01.DBF
X:\ORADATA\RIS\RIS01.DBF
X:\ORADATA\RIS\RISINDEX01.DBF
X:\ORADATA\RIS\OGG.DBF
X:\ORADATA\RIS\PACS02.DBF
X:\ORADATA\RIS\PACS03.DBF
X:\ORADATA\RIS\ZBX.DBF
已选择11行。
已经修改好了。
3.将standby_file_management参数改为auto,继续同步数据
SQL> alter system set standby_file_management=AUTO scope=both;
系统已更改。
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
数据库已更改。