Oracle 尽管有可用报备份,还原失败显示 RMAN-03002: ORA-01180 : Can Not Create Datafile 1

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com

 

 

ORA-01180
oerr ora 1180
01180, 00000, "can not create datafile 1"
// *Cause:  Attempting to create datafile 1 using ALTER DATABASE CREATE
//          DATAFILE.
// *Action: Recover file from a backup or recreate database.

oerr rman 3002
3002, 1, "failure of %s command at %s"
// *Cause:  This message should be accompanied by other error message(s)
//          indicating the cause of the error.
// *Action: Check the accompanying errors.

 

适用于:

Oracle Database – Enterprise Edition – 版本 10.2.0.3 及以上
本文信息适用于任何平台。
***于20-July-2015检查相关性***
症状

在RMAN目录有可用备份,但还原数据库失败显示:

creating datafile No=1 name=/data/oracle/orcl/datafile/o1_mf_system_3n5w1nky_.dbf
released channel: t1
released channel: t2
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 07/04/2008 10:54:29
ORA-01180: can not create datafile 1
ORA-01110: data file 1: ‘/gpfs/dataprd/ORCL/datafile/o1_mf_system_3n5w1nky_.dbf’

原因

还原失败,因为RMAN 认为没有可用的备份来还原,因此它会尝试创建数据文件并应用归档重做日志。但数据文件1无法被重建,因此会失败。

所以为什么虽然LIST BACKUP显示可用备份但RMAN 认为没有可用的备份?

这是因为在控制文件中有重复的incarnation条目。有两个有相同重置SCN的incarnation,如下所示

DB Key Inc Key DB Name  DB ID STATUS  Reset SCN Reset Time
1 1 ORCL 3441889539 PARENT 1 20-NOV-07
3 (*) 3 ORCL 3441889539 CURRENT 2388963095  30-APR-08
2 (*) 2 ORCL 3441889539 PARENT 2388963095 26-APR-08

这种情况发生的唯一可能是控制文件从一个冷OS备份中还原,然后另一个resetlogs 完成,生成了相同的resetlogs SCN。

同时属于incarnation2和3的所有备份使其成为一个孤立且最新的备份。.

这报告于

Bug 5844752 RMAN RESTORES OLD BACKUP IF V$DATABASE_INCARNATION HAS  ‘DUPLICATE’  ENTRIES
Status: 36,Duplicate Bug.

解决方法:重建控制文件

基础bug 未发布

Bug 5701695  Recovery can fail with ORA-600 [krhpfh_03-1209] if resetlogs have occurred.
   Fixed-Releases:   11.1.0.6

 

解决方案

Bug是未发布Bug 5701695的复制,从11.1.0.6起被修复,一些平台也提供一次性补丁。

检查对于受影响的数据库发行版和平台是否有可用补丁。如果没有可用补丁, 使用以下解决方法之一:

  1.  创建一个新的控制文件:
  2.  重建控制文件:
    Note 1012929.6– How to Recreate the Controlfileb.  分类我们还原数据库所需的备份片,我们能使用RMAN LIST BACKUP命令的输出来了解分类备份片的操作。
    • 对于磁盘备份片,你可以使用:

CATALOG BACKUPPIECE ‘<handle>’;

你也可以分类在一个目录中的所有片:
CATALOG START WITH ‘<directory>’;

如果备份在恢复区,我们可以分类整个恢复区,使用:

CATALOG RECOVERY AREA NOPROMPT;

    • 对于磁带备份片:

=> 这是使用Oracle Secure Backup (OSB)的示例:

*. 定义在RMAN自动配置中的一个tape channel:

CONFIGURE CHANNEL DEVICE TYPE ‘SBT_TAPE’
PARMS ‘SBT_LIBRARY=/usr/local/oracle/backup/lib/libobk.so,ENV=(OB_MEDIA_FAMILY=RMAN-DEFAULT)’;

*. 分类磁带备份片,使用:
CATALOG DEVICE TYPE ‘SBT_TAPE’ BACKUPPIECE ‘0pivagf8_1_1’;

参见: Note 550082.1 – HOW TO CATALOG  TAPE BACKUP PIECES

  1.  在数据库上发出一个新的resetlogs,使当前incarnation信息没有等于resetlogs_change#的 prior_resetlogs_change# :
  2. SQL> shutdown immediate
    b. SQL> startup mount
    c. 发出:
    SQL> recover database using backup controlfile until cancel;
    — type cancel when prompted for archivelog file
    d. 使用resetlogs打开数据库:
    SQL> alter database open resetlogs;
    e. 创建新备份。

 

注:
如果你丢失了所有数据文件,则不可能再重建控制文件,因为这至少需要数据文件物理可可用。在这种情况下,你需要创建Service Request,请求oracle support 提供内部 PL/SQL 脚本从备份片中直接抽取数据文件而不使用RMAN。

 

 

参考

BUG:5701695 – ORA-600 [KRHPFH_03-1209] WHEN DOING WHOLE DB RECOVERY
BUG:5844752 – RESTORE FAILS – CURRENT INCARNATION RESETLOGS SCN SAME AS PARENT INCARNATION
NOTE:1012929.6 – How to Recreate the Controlfile
NOTE:550082.1 – HOW TO CATALOG TAPE BACKUP PIECES
NOTE:735106.1 – How to Recreate a Controlfile
BUG:5629483 – RMAN RESTORE DATABASE FAILS WITH ORA-1180 ON DATAFILE 1, WHILE BACKUPS AVAILABLE

关注刘相兵的新浪微博

扫码加入微信Oracle小密圈,了解Oracle最新技术下载分享资源

Speak Your Mind

沪公网安备 31010802001379号

TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569