Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
[Oracle] RMANでのバックアップ実行時にアーカイブログファイルの識別エラーが発生する | Archive Redo Blog

Archive Redo Blog

DBエンジニアのあれこれ備忘録

Recovery Managerでバックアップを実行しようとすると以下のようにアーカイブログが識別できないというエラーが発生することがあります。


RMAN> RUN {
2> backup incremental level = 0 database format 'C:\Oracle\Backup\%d_DBF_%U_%Y%M%D.BAK' 
plus archivelog format 'C:\Oracle\Backup\%d_ARC_%U_%Y%M%D.BAK' delete all input;
3> backup current controlfile format 'C:\Oracle\Backup\%d_CTL_%U_%Y%M%D.BAK';
4> }
5> 

backupが開始されました(開始場所: 04-10-19)
現在のログがアーカイブされました。
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: sid=18 devtype=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 10/19/2004 20:06:07
RMAN-06059: expected archived log not found, lost of archived log compromises recoverability
ORA-19625: ファイルC:\ORACLE\ORADATA\ORCL\ARCHIVE\1_20.DBFの識別中にエラーが発生しました。
ORA-27041: ファイルをオープンできません。
OSD-04002
Recovery Managerが完了しました。


このエラーはバックアップを実行する前にOSコマンドによってアーカイブログを削除した時に発生します。

(制御ファイル中のアーカイブログ情報と実際のアーカイブログファイルが矛盾した状態になっています)

このエラーを回避するには、以下のようにRMANでbackupコマンドを実行する前に、crosscheckコマンドを実行し、制御ファイル中のアーカイブログファイル情報のチェックを行う必要があります。

RMAN> RUN {
2> crosscheck archivelog all;
3> backup incremental level = 0 database format 'C:\Oracle\Backup\%d_DBF_%U_%Y%M%D.BAK' 
plus archivelog format 'C:\Oracle\Backup\%d_ARC_%U_%Y%M%D.BAK' delete all input;
4> backup current controlfile format 'C:\Oracle\Backup\%d_CTL_%U_%Y%M%D.BAK';
5> }
6> 

* * Again: this will **not** prevent inline script, e.g.: * . * * This workaround is possible because Safari supports the non-standard 'beforeload' event. * This allows us to trap the module and nomodule load. * * Note also that `nomodule` is supported in later versions of Safari - it's just 10.1 that * omits this attribute. * --> */ (function () { const check = document.createElement('script'); if (!('noModule' in check) && 'onbeforeload' in check) { let support = false; document.addEventListener( 'beforeload', (e) => { if (e.target === check) { support = true; } else if (!e.target.hasAttribute('nomodule') || !support) { return; } e.preventDefault(); }, true, ); check.type = 'module'; const blob = URL.createObjectURL( new window.Blob([], { type: 'text/javascript' }), ); check.src = blob; check.onload = () => { URL.revokeObjectURL(blob); }; document.head.appendChild(check); check.remove(); } })();