7 x 24 在线支持!
Oracle RMAN Duplicate 无法创建临时文件,生成错误ORA-01186/ORA-01122/ORA-01206/ORA-01203
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com
适用于:
Oracle Database – Enterprise Edition – 版本10.2.0.2 到11.2.0.4 [Release 10.2 to 11.2]
本文信息适用于任何平台。
***27-NOV-2015检查相关性***
症状
在RMAN Duplication期间,在创建临时文件时,我们在辅助实例中看到以下错误:
ORA-01186: file 1025 failed verification tests
ORA-01122: database file 1025 failed verification check
ORA-01110: data file 1025: ‘/u01/oradata/temp_01.dbf’
ORA-01206: file is not part of this database – wrong database id
File 1025 not verified due to error ORA-01122
或
ORA-01186: file 1025 failed verification tests
ORA-01122: database file 1025 failed verification check
ORA-01110: data file 1025: ‘/u01/oradata/temp_01.dbf’
ORA-01203: wrong incarnation of this file – wrong creation SCN
File 1025 not verified due to error ORA-01122
Duplicate操作不会失败。以上错误只影响辅助实例中临时文件的创建。
原因
当复制数据库且辅助实例临时文件预先存在与操作系统上,关于临时文件的错误ORA-01122 会发生。
当第一次运行复制,而操作系统中没有临时文件时,复制正确运行且临时文件被成功创建。辅助实例的alert.log 记录条目如下:
Tue Jun 27 13:10:28 2006
Errors in file /apps/oracle/admin/AUX/bdump/aux_dbw0_19957.trc:
ORA-01186: file 201 failed verification tests
ORA-01157: cannot identify/lock data file 201 – see DBWR trace file
ORA-01110: data file 201: ‘/u002/oradata/AUX/temp01.dbf’ <– expected error as file does not exist.
Tue Jun 27 13:10:28 2006
File 201 not verified due to error ORA-01157
Tue Jun 27 13:10:28 2006
Dictionary check complete
Tue Jun 27 13:10:28 2006
SMON: enabling tx recovery
Tue Jun 27 13:10:28 2006
Re-creating tempfile /u002/oradata/AUX/temp01.dbf <– Tempfiles are added correctly.
Database Characterset is WE8ISO8859P1
RMAN Duplicate尝试将临时文件添加到辅助数据库中。当第一次进行复制时,临时文件不会被物理显示,因此Oracle会发出ORA-01186/ORA-01157 并继续创建临时文件。
但是,当辅助临时文件已存在(即来自之前成功的复制),则Oracle无法将临时文件添加到辅助实例且会发出ORA-01186/ORA-01122/ORA-01203 或 ORA-01186/ORA-01122/ORA-01206
解决方案
在错误发生后,你可以连接到辅助实例并手动添加临时文件。
为了将来避免这些错误,当启动复制操作时,确保你清除辅助实例的数据文件和临时文件。你可以在尝试再次复制之前,使用DROP DATABASE命令删除辅助实例的所有文件,这样当RMAN在为辅助实例创建临时文件的情况下,我们不遇到ORA-01122错误。
以下是使用DROP DATABASE来清理数据库所有文件(datafiles/tempfiles/redologs/controlfiles/spfile)的示例:
从SQL*PLUS连接到需要被drop并在exclusive模式中mount的数据库:
SQL> startup mount exclusive;
SQL> alter system enable restricted session;
SQL> exit;
From RMAN, connect to the database that needs to be dropped as target and execute:
RMAN> drop database including backups;
此外,如果你不想使用DROP DATABASE 命令,你能使用 V$DATAFILE 和V$TEMPFILE 视图来查看辅助数据库的数据文件和临时文件路径并在再次复制之前删除它们。