アーカイブファイルをOSコマンドで削除したらRMANのcrosscheckで整合性確認が必要
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>
不要アーカイブファイルが制御ファイルから削除されました。
作業はこれで完了です。
タグ:crosscheck, rman, アーカイブ削除