Oracleデータベース(11.2.0.4.0)を別のファイルレイアウトのテストシステムに復元しようとしています。本番データベースはRMANを使用してバックアップされており、カタログは使用されていません。日曜日(最後のデータファイルは3月9日)にすべてのデータファイルの完全バックアップを実行し、週の毎晩のみアーカイブログをバックアップします。
3/9には11のデータファイルがありました。 3/12に新しいテーブルスペース/データファイルを作成しました。今日の復元を行うときの私の一般的なプロセスは次のとおりです。
CATALOG BACKUPPIECE '/path/to/backuppiece.bkp'
_最後に、このRMANコマンドを実行してデータベースを復元/回復します(_LIST BACKUPSET
_からSCNを取得):
_RUN
{
SET UNTIL SCN 426265698;
SET NEWNAME FOR DATAFILE 1 TO '/var/Oracle/data/orcl/system01.dbf';
SET NEWNAME FOR DATAFILE 2 TO '/var/Oracle/data/orcl/sysaux01.dbf';
SET NEWNAME FOR DATAFILE 3 TO '/var/Oracle/data/orcl/undotbs01.dbf';
SET NEWNAME FOR DATAFILE 4 TO '/var/Oracle/data/orcl/users01.dbf';
SET NEWNAME FOR DATAFILE 5 TO '/var/Oracle/data/orcl/foo01.dbf';
SET NEWNAME FOR DATAFILE 6 TO '/var/Oracle/data/orcl/foo02.dbf';
SET NEWNAME FOR DATAFILE 7 TO '/var/Oracle/data/orcl/foo03.dbf';
SET NEWNAME FOR DATAFILE 8 TO '/var/Oracle/data/orcl/foo04.dbf';
SET NEWNAME FOR DATAFILE 9 TO '/var/Oracle/data/orcl/foo05.dbf';
SET NEWNAME FOR DATAFILE 10 TO '/var/Oracle/data/orcl/foo06.dbf';
SET NEWNAME FOR DATAFILE 11 TO '/var/Oracle/data/orcl/foo07.dbf';
SET NEWNAME FOR DATAFILE 12 TO '/var/Oracle/data/orcl/foo08.dbf';
RESTORE DATABASE;
SWITCH DATAFILE ALL;
RECOVER DATABASE;
}
_
そのため、このプロセスは一般的にうまく機能しています。 3/9バックアップに存在するデータファイルは、新しい場所に復元されます。問題は、3/12に作成したテーブルスペースです。リカバリプロセスがその時点になると、RMANは次のように出力します。
_creating datafile file number=12 name=/opt/Oracle/oradata/orcl/foo08.dbf
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 03/14/2014 13:24:41
RMAN-20505: create datafile during recovery
ORA-01119: error in creating database file '/opt/Oracle/oradata/orcl/foo08.dbf'
ORA-27040: file create error, unable to create file
Linux-x86_64 Error: 2: No such file or directory
_
これで、古い場所にディレクトリを作成し、RMANにそのディレクトリに復元させ、後でデータファイルを移動することで、これを回避できることがわかりました。しかし、最後のrenameコマンドが機能しない理由、またはアーカイブログを復元するときに名前を変更するために何を変更する必要があるのかを理解したいと思います。
SET NEWNAMEはRESTOREおよびSWITCHでは機能しますが、RECOVERでは機能しません。リカバリが始まる前に、データファイルの名前が変更され、切り替えられていました。
ただし、プロセスに欠陥があり、上記の問題はその副作用です。
3/9バックアップから制御ファイルを復元します。
どうして? 3/9の状態ではなく、現在の状態にできるだけ近づけるために、ほぼ完全な回復を行います。 3/14に取得した最新のバックアップから制御ファイルを復元します。
復元された制御ファイルは3/10-3/14のバックアップピースを認識しないため、これをそれぞれ実行します
最新の制御ファイルを使用する場合、この手順は不要です。