Email: service@parnassusdata.com 7 x 24 online support!
Oracle 尽管有可用报备份,还原失败显示 RMAN-03002: ORA-01180 : Can Not Create Datafile 1 ORA-01180: 无法创建数据文件 1
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com
ORA-01180: 无法创建数据文件 1
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起被修复,一些平台也提供一次性补丁。
检查对于受影响的数据库发行版和平台是否有可用补丁。如果没有可用补丁, 使用以下解决方法之一:
- 创建一个新的控制文件:
-
重建控制文件:
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
- 在数据库上发出一个新的resetlogs,使当前incarnation信息没有等于resetlogs_change#的 prior_resetlogs_change# :
-
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