诗檀软件专业数据库修复团队
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