アーカイブファイルをOSコマンドで削除したらRMANのcrosscheckで整合性確認が必要

oracle-y-lupa-100

RMAN使用環境におけるアーカイブファイル削除の手順

RMANはアーカイブファイルの情報をリカバリカタログまたは制御ファイルに保持しています。RMANのdeleteコマンド以外の方法、例えばOSコマンドなどでアーカイブファイルを削除した場合は、RMANはcroscheckコマンドが実行されるまでアーカイブファイルが削除されていることを認識できません。

それでは、OSコマンドでアーカイブファイルを削除すると、RMANの認識がどのようになるのかを検証します。



 

RMANのアーカイブファイル認識を確認

OSコマンドでアーカイブファイルを削除した後に、RMANのアーカイブファイル認識を確認します。oracleユーザーでRMANコマンドラインを起動します。

[oracle@server01:/home/oracle] rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on 土 11月 9 16:48:51 2013

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

ターゲット・データベース: db01 (データベースID=1931198081)に接続されました

RMAN>

 

認識しているアーカイブファイルを、list archivelog all でリストします。

RMAN> list archivelog all;

リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
データベースdb_unique_name db01のアーカイブ・ログ・コピーのリスト
=====================================================================

Key     Thrd Seq     S Low時間
------- ---- ------- - --------
34      1    21      A 13-10-29
        名前: +DATA/db01/archive2/1_21_829070404.dbf

33      1    21      A 13-10-29
        名前: +DATA/db01/archive1/1_21_829070404.dbf

36      1    22      A 13-10-29
        名前: +DATA/db01/archive2/1_22_829070404.dbf

(以下省略)

 

S列が「A」、つまり使用可能と認識されているアーカイブファイルがリストされます。OSコマンドで削除した場合、実際にアーカイブファイルが存在していなくても、RMANは削除されたことを知らないので存在しているものとしてリストします。

次に、crosscheckコマンドを使用してRMANが認識しているアーカイブファイルと実際に存在しているアーカイブファイルの整合性チェックを行います。

 

crosscheck実行

crosscheck archivelog all コマンドを実行します。

RMAN> crosscheck archivelog all;

チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=8 インスタンス=db011 デバイス・タイプ=DISK
アーカイブ・ログの検証に失敗しました
アーカイブ・ログ・ファイル名=+DATA/db01/archive2/1_21_829070404.dbf レコードID=34 スタンプ=830116871
アーカイブ・ログの検証に失敗しました
アーカイブ・ログ・ファイル名=+DATA/db01/archive1/1_21_829070404.dbf レコードID=33 スタンプ=830116871
アーカイブ・ログの検証に失敗しました
アーカイブ・ログ・ファイル名=+DATA/db01/archive2/1_22_829070404.dbf レコードID=36 スタンプ=830116874
アーカイブ・ログの検証に失敗しました

(途中省略)

アーカイブ・ログ・ファイル名=+DATA/db01/archive1/1_295_829070404.dbf レコードID=802 スタンプ=830980179
アーカイブ・ログの検証に失敗しました
アーカイブ・ログ・ファイル名=+DATA/db01/archive2/1_295_829070404.dbf レコードID=803 スタンプ=830980179
アーカイブ・ログの検証に失敗しました
アーカイブ・ログ・ファイル名=+DATA/db01/archive1/1_296_829070404.dbf レコードID=804 スタンプ=830980199
アーカイブ・ログの検証が正常終了しました
アーカイブ・ログ・ファイル名=+DATA/db01/archive2/1_296_829070404.dbf レコードID=805 スタンプ=830980199
アーカイブ・ログの検証に失敗しました
アーカイブ・ログ・ファイル名=+DATA/db01/archive1/1_297_829070404.dbf レコードID=808 スタンプ=830980208
アーカイブ・ログの検証が正常終了しました
アーカイブ・ログ・ファイル名=+DATA/db01/archive2/1_297_829070404.dbf レコードID=809 スタンプ=830980208
アーカイブ・ログの検証が正常終了しました

(以下省略)

 

RMANが存在していると認識していて、でもOSコマンドで削除したアーカイブファイルは「アーカイブ・ログの検証に失敗しました」と表示されました。

一方、RMANが存在していると認識していて、実際に存在しているアーカイブファイルは「アーカイブ。ログの検証が正常終了しました」と表示されています。

 

RMANのアーカイブファイル認識を再確認

crosscheckを実行して整合性確認を行った後に、再度、list archivelog all でRMANのアーカイブファイルの認識を確認してみます。

RMAN> list archivelog all;

リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
データベースdb_unique_name db01のアーカイブ・ログ・コピーのリスト
=====================================================================

Key     Thrd Seq     S Low時間
------- ---- ------- - --------
34      1    21      X 13-10-29
        名前: +DATA/db01/archive2/1_21_829070404.dbf

33      1    21      X 13-10-29
        名前: +DATA/db01/archive1/1_21_829070404.dbf

36      1    22      X 13-10-29
        名前: +DATA/db01/archive2/1_22_829070404.dbf

(以下省略)

 

crosscheckコマンド実行前にS列が「A」で使用可能と認識されているアーカイブファイルが、「X」、つまり期限切れというステータスに変わっていることが確認できます。

OSコマンドで削除されて「X」の期限切れとなったアーカイブファイルはRMANで認識しておく必要はないので、RMANから削除します。

 

不要アーカイブファイルを制御ファイルから削除

delete expired archivelog all コマンドでRMANから不要アーカイブファイルを削除します。

RMAN> delete expired archivelog all;

チャネル: ORA_DISK_1がリリースされました
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=8 インスタンス=db011 デバイス・タイプ=DISK
データベースdb_unique_name db01のアーカイブ・ログ・コピーのリスト
=====================================================================

Key     Thrd Seq     S Low時間
------- ---- ------- - --------
34      1    21      X 13-10-29
        名前: +DATA/db01/archive2/1_21_829070404.dbf

33      1    21      X 13-10-29
        名前: +DATA/db01/archive1/1_21_829070404.dbf

36      1    22      X 13-10-29
        名前: +DATA/db01/archive2/1_22_829070404.dbf

(途中省略)

798     2    122     X 13-11-08
        名前: +DATA/db01/archive1/2_122_829070404.dbf

806     2    123     X 13-11-08
        名前: +DATA/db01/archive1/2_123_829070404.dbf

このオブジェクトを削除しますか(YESまたはNOを入力してください)。

 

list archivelog all のコマンドでS列が「X」となっているアーカイブファイルがリストされ、それらを削除するかの応答を求められます。「YES」を入力して削除します。

このオブジェクトを削除しますか(YESまたはNOを入力してください)。 YES
アーカイブ・ログを削除しました
アーカイブ・ログ・ファイル名=+DATA/db01/archive2/1_21_829070404.dbf レコードID=34 スタンプ=830116871
アーカイブ・ログを削除しました
アーカイブ・ログ・ファイル名=+DATA/db01/archive1/1_21_829070404.dbf レコードID=33 スタンプ=830116871
アーカイブ・ログを削除しました
アーカイブ・ログ・ファイル名=+DATA/db01/archive2/1_22_829070404.dbf レコードID=36 スタンプ=830116874
アーカイブ・ログを削除しました

(途中省略)

アーカイブ・ログ・ファイル名=+DATA/db01/archive2/2_122_829070404.dbf レコードID=799 スタンプ=830980166
アーカイブ・ログを削除しました
アーカイブ・ログ・ファイル名=+DATA/db01/archive1/2_122_829070404.dbf レコードID=798 スタンプ=830980166
アーカイブ・ログを削除しました
アーカイブ・ログ・ファイル名=+DATA/db01/archive1/2_123_829070404.dbf レコードID=806 スタンプ=830980202
774EXPIREDオブジェクトを削除しました

RMAN>

 

不要アーカイブファイルが制御ファイルから削除されました。
作業はこれで完了です。

 



 
 


サブコンテンツ

このページの先頭へ