私はこのテクニックを使用して開発を更新しています。本番データのある環境。
ビジネスプロセスは、開発するクローンの更新に使用する完全バックアップのテープホールドを要求することです。これがインポートされると、データベースのバックアップの正確なサーバー終了時刻(ログのバックアップではなく)を、設定するまでの時間の句に使用します。
run {
set until time = "TO_DATE('08/09/2014 20:24:47','MM/DD/YYYY HH24:MI:SS')" ;
allocate auxiliary channel t1 type 'sbt_tape';
duplicate target database to DEVDB;
}
これは一部の時間にのみ機能します。多くの場合、スクリプトは、テープホールドにない以前のバックアップを探します。
必要なメディア
検出された基準:メディア処理が必要
ジョブID:ステータス:メディアがライブラリにありません
ライブラリ名:SEA-TAPELIB07(i500 B)
メディアラベル:SVL432L4
失敗の理由:ジョブ[2518965]に必要なメディア[SVL432L4]がライブラリ[TAPELIB(9999)]にありません。インポート機能を使用して、メディアを[使用不可]の場所からライブラリ[TAPELIB(9999)]にインポートしてください。
メディアリスト:該当なし
回避策として、以前のバックアップを要求して、スクリプトを再実行しました。完了しましたが、前日のバックアップを使用し、リクエストは2日遅れて実行されました。この手法の何が問題になっていますか、または別の方法を使用する必要がありますか?どんな提案も参考になります。
最初に、バックアップがライブラリにあることを確認する必要があります(確かにそれを見つけるためのより良い方法を知っているので、クエリを実行します)。
select
D.DB_NAME, B.DB_ID, BASET.BCK_TYPE,
decode(BASET.CONTROLFILE_INCLUDED,'BACKUP','YES','NO') as CONTROLFILE_INCLUDED,
BASET.INCR_LEVEL, bapiece.tag, bapiece.handle, bapiece.start_time,
bapiece.completion_time,
round(bapiece.bytes/1024/1024,2) as Mb
from rman.bp bapiece,
rman.dbinc d,
rman.bs baset,
rman.db b
where BAPIECE.DB_KEY=D.DB_KEY
and D.DB_NAME='SFPROD'
and BASET.DB_KEY=D.DB_KEY
and BASET.BS_KEY = BAPIECE.BS_KEY
and bapiece.start_time>sysdate-1
and B.DB_KEY=D.DB_KEY
--- and bapiece.handle like '%.dbf%'
order by tag desc, handle desc ;
そして...データベースを復元/複製するために「時間まで設定」を使用するのは嫌いです。より人間に優しいですが、復元の最後にrmanエラーが発生することに驚かれる可能性があります。複製プロセスの最後のコミット(SCN)を見つけてみてください。
SQL> select max(next_change#)
from v$archived_log
where archived = 'YES'
group by thread#;
またはrmanで:
RMAN> list backup of archivelog all;
--Next SCN
その後:
run { set until scn ... ; allocate auxiliary channel t1 type 'sbt_tape'; duplicate target database to DEVDB; }