Archive Redo Blog

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


テーマ:
普段は NOARCHIVELOG モードで使用している開発環境を ARCHIVELOG モードに変更しました。

そしてその後何日か使っていると突然 Oracle が応答しなくなりました。

新規に接続しようとすると

ORA-00257: アーカイブ・エラーです。解除されるまで内部接続のみにしてください。

が発生します。


アラート・ログを見ると以下のエラーが発生していました。

ORA-19815: 警告: db_recovery_file_dest_size(2147483648バイト)は100.00%バイトが使用され、残り0バイトが使用可能です。

Tue Feb 13 15:18:31 2008
*************************************************************
You have the following choices to free up space from
flash recovery area:
1. Consider changing your RMAN retention policy.
   If you are using dataguard, then consider changing your
   RMAN archivelog deletion policy.
2. Backup files to tertiary device such as tape using the
   RMAN command BACKUP RECOVERY AREA.
3. Add disk space and increase the db_recovery_file_dest_size
   parameter to reflect the new space.
4. Delete unncessary files using the RMAN DELETE command.
   If an OS command was used to delete files, then use
   RMAN CROSSCHECK and DELETE EXPIRED commands.
*************************************************************
そして、このエラーと
ORA-19809: リカバリ・ファイルの制限を超えています
ORA-19804: 10017792バイトのディスク領域を制限2147483648から再生できません
このエラーも...

ORA-16038: ログ3、順序番号8110をアーカイブできません。
ORA-19809: リカバリ・ファイルの制限を超えています
ORA-00312: オンライン・ログ3 スレッド1: 'C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO03.LOG'

これらがセットで延々出続けています。


フラッシュ・リカバリ領域が一杯になったため、REDOログをアーカイブできないということのようです。

フラッシュ・リカバリ領域を使用しない場合にも、ディスクが物理的に一杯になった時に同じような状態に陥ることがありますが、この場合は不要なファイルを物理的に移動するなり削除するなりしてディスクを空けてやれば再び動き始めます。

ところが、フラッシュ・リカバリ領域が一杯になった場合は、ファイルを物理的に移動しても削除しても解消しません。

フラッシュ・リカバリ領域は Oracleによって論理的に管理されているため、物理的に削除されても空き領域が増えたと判断されないからです。


ORA-19815 に対する対処方法の説明は日本語では以下のようになっています。

次のいずれかの処置を行ってください。
1. ディスク領域を追加して、DB_RECOVERY_FILE_DEST_SIZEを増やします。

2. RMANを使用してファイルを3次デバイスにバックアップします。

3. RMAN保存方針の変更を検討します。

4. RMANアーカイブ・ログ削除ポリシーの変更を検討します。

5. RMANを使用してファイルをリカバリ領域から削除します。

つまり、フラッシュ・リカバリ領域に空き領域を確保するには、DB_RECOVERY_FILE_DEST_SIZE初期化パラメータを変更して領域を拡張するか、RMANを使ってバックアップや削除を行うか、いずれかの方法を取らなければならないということです。


物理的にディスクに余裕がある場合、一番手っ取り早いのは DB_REBOVERY_FILE_DEST_SIZE初期化パラメータを変更する方法でしょう。

例えば、4GBに拡張する場合は、

ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 4294967296;
とします。

これで急場は凌げます。


ただし、根本的な解決にはなっていないので、結局は RMANでバックアップや削除を行って空き領域を確保してやらなければなりません。

例えば、とにかく古いアーカイブREDOログファイルをざっくり削除して空き領域を増やしたいという場合は、物理的にアーカイブREDOログファイルを削除したあと、RMANを起動し、

RMAN TARGET /

アーカイブREDOログファイルのクロスチェックをかけ、

CROSSCHECK ARCHIVELOG ALL;
存在しないアーカイブREDOログファイルを RMANリポジトリから削除します。

DELETE EXPIRED ARCHIVELOG ALL;

と、フラッシュ・リカバリ領域が一杯になった場合は、上記のような対応を取れば、すぐに復旧することが可能ですが、このようなトラブルを避けるためにもフラッシュ・リカバリ領域の利用は RMANによるバックアップ計画とセットで検討するべきです。

もし、RMANを使わないのであれば、アーカイブREDOログファイルの出力先を LOG_ARCHIVE_DEST_n初期化パラメータで指定し、フラッシュ・リカバリ領域を使用しないようにしたほうがいいようです。


AD
いいね!した人  |  コメント(0)  |  リブログ(0)

arbさんの読者になろう

ブログの更新情報が受け取れて、アクセスが簡単になります

最近の画像つき記事  もっと見る >>

AD

ブログをはじめる

たくさんの芸能人・有名人が
書いているAmebaブログを
無料で簡単にはじめることができます。

公式トップブロガーへ応募

多くの方にご紹介したいブログを
執筆する方を「公式トップブロガー」
として認定しております。

芸能人・有名人ブログを開設

Amebaブログでは、芸能人・有名人ブログを
ご希望される著名人の方/事務所様を
随時募集しております。