ORA-01180: can not create datafile 1

  • A+
Categories:Oracle

Last night I prepared one restore guide for a friend, and I found when I restored the full database, I always got below error:

creating datafile file number=1 name=+DATA/ORATEST/datafile/system01.dbf
released channel: d1
released channel: d2
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 05/05/2017 00:59:49
ORA-01180: can not create datafile 1
ORA-01110: data file 1: '/oradata/ora11g/system01.dbf'

I already set new name for the system data file, while what the new name was, I always got this error.

It was weird that I had been restored databases many many times, and I double checked the restore statements to make sure they were correct.

I did not found way to fix it and until the next day I realized maybe I made one simple mistake and caused this issue. From Oracle support webiste, I found a reply said that Oracle would do similar thing when there was no backup of the datafile, so the reason was that there was no backup for the database?

RMAN> list backup of database;

specification does not match any backup in the repository

RMAN> catalog start with '/oradata/oraback';

searching for all files that match the pattern /oradata/oraback

List of Files Unknown to the Database
=====================================
File Name: /oradata/oraback/ORA11G_20170504_7_1_07s3c3bo.ctl
File Name: /oradata/oraback/ora11g_full.log
File Name: /oradata/oraback/ORA11G_20170504_3_1_03s3c3bm.ctl
File Name: /oradata/oraback/ORA11G_20170504_8_1_08s3c3bp.ora
File Name: /oradata/oraback/ORA11G_20170504_5_1_05s3c3bm.ctl
File Name: /oradata/oraback/ORA11G_20170504_4_1_04s3c3bm.ctl
File Name: /oradata/oraback/ORA11G_20170504_6_1_06s3c3bm.ctl
File Name: /oradata/oraback/ORA11G_20170504_9_1_09s3c3c0.arc

Do you really want to catalog the above files (enter YES or NO)? YES
cataloging files...
cataloging done

List of Cataloged Files
=======================
File Name: /oradata/oraback/ORA11G_20170504_7_1_07s3c3bo.ctl
File Name: /oradata/oraback/ORA11G_20170504_3_1_03s3c3bm.ctl
File Name: /oradata/oraback/ORA11G_20170504_8_1_08s3c3bp.ora
File Name: /oradata/oraback/ORA11G_20170504_5_1_05s3c3bm.ctl
File Name: /oradata/oraback/ORA11G_20170504_4_1_04s3c3bm.ctl
File Name: /oradata/oraback/ORA11G_20170504_6_1_06s3c3bm.ctl
File Name: /oradata/oraback/ORA11G_20170504_9_1_09s3c3c0.arc

List of Files Which Where Not Cataloged
=======================================
File Name: /oradata/oraback/ora11g_full.log
  RMAN-07517: Reason: The file header is corrupted

Then I restored it again and it worked well.

So, why I did catalog the backup first?

[oracle@olinux69 oradata]$ rman target / log='/oradata/oraback/ora11g_full.log' <<EOF
> run {
> allocate channel d1 type disk;
> allocate channel d2 type disk;
> allocate channel d3 type disk;
> allocate channel d4 type disk;
> backup AS COMPRESSED BACKUPSET INCREMENTAL LEVEL = 0 database
> format '/oradata/oraback/full_%d_%T_%s_%p_%u.bak' tag 'full_backup'
> include current controlfile
> format '/oradata/oraback/%d_%T_%s_%p_%u.ctl' tag 'ctl_backup'
> plus archivelog SKIP INACCESSIBLE
> format '/oradata/oraback/%d_%T_%s_%p_%u.arc' tag 'arc_backup'
> delete all input;
> release channel d4;
> release channel d3;
> release channel d2;
> release channel d1;
> }
> EOF

I made the backup both database and controlfile at the same time, and I though the contofile should already have the backup information, and the restore was on the same server, so I made such assumption.

So if I double checked the backup information, I could finish the restore in several minutes.

And how to backup them both and the control file will contain the backup information? Is it possible? :)

Comment

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: