- TOP
- 技術情報
- Oracle DB Tips
- ORA-19809: リカバリ・ファイルの制限を超えています
KNOWLEDGE
コーソルの技術情報
KNOWLEDGE検索
コーソルでは経験豊かなエンジニアが、Oracle Databaseに関するお役立ち情報を発信しています。
データベースのチューニングや設定にお役立ていただけます。
コーソルの技術情報
KNOWLEDGE検索
コーソルでは経験豊かなエンジニアが、Oracle Databaseに関するお役立ち情報を発信しています。
データベースのチューニングや設定にお役立ていただけます。
Oracle DB Tips
ORA-19809 はフラッシュ・リカバリ領域(11.2以降で高速リカバリ領域と名称変更)が不足した場合に発生するエラーです。
フラッシュ・リカバリ領域とは、バックアップファイル、アーカイブログファイルなどのリカバリ関連のファイルの出力先となるディスク領域です。フラッシュ・リカバリ領域に出力されたファイルはOracle Databaseによって管理され、初期化パラメータDB_RECOVERY_FILE_DEST_SIZEに設定されたサイズを超えないように制御されます。
フラッシュリカバリ領域へファイルを出力しようとして、ファイルサイズの総計がDB_RECOVERY_FILE_DEST_SIZEを超える場合、ORA-19809 エラーが発生します。
RMAN> backup database; backupが開始されました(開始時間: 11-12-15) : : RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03009: backupコマンド(ORA_DISK_1チャネル上)が12/15/2011 13:27:43で失敗しました ORA-19809: リカバリ・ファイルの制限を超えています ORA-19804: 67108864バイトのディスク領域を制限31457280から再生できません
フラッシュリカバリ領域にファイルを出力するコマンドを実行した結果、ORA-19809エラーが発生した場合、ORA-19804エラーが同時に出力されます。
アーカイブログの出力に失敗した場合、アラートログに以下のようなログが出力されます。
Errors in file /var/log/oracle/xxxx/diag/rdbms/xxxx/xxxx/trace/xxxx_arc1_3853.trc: ORA-19815: 警告: db_recovery_file_dest_size(31457280バイト)は100.00%バイトが使用され、残り0バイトが使用可能です。 ************************************************************************ You have following choices to free up space from recovery area: 1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard, then consider changing RMAN ARCHIVELOG DELETION POLICY. 2. Back up files to tertiary device such as tape using RMAN BACKUP RECOVERY AREA command. 3. Add disk space and increase db_recovery_file_dest_size parameter to reflect the new space. 4. Delete unnecessary files using RMAN DELETE command. If an operating system command was used to delete files, then use RMAN CROSSCHECK and DELETE EXPIRED commands. ************************************************************************ ARC1: Error 19809 Creating archive log file to '/var/log/oracle/xxxx/arch/xxxx/archivelog/2011_12_15/o1_mf_1_7_%u_.arc' ARCH: Archival stopped, error occurred. Will continue retrying ORACLE Instance xxxx - Archival Error ORA-16038: ログ1、順序番号7をアーカイブできません。 ORA-19809: リカバリ・ファイルの制限を超えています ORA-00312: オンライン・ログ1 スレッド1: '/oradata/xxxx/redo01/redo111.log' ORA-00312: オンライン・ログ1 スレッド1: '/oradata/xxxx/redo02/redo112.log'
ORA-19809エラー発生時、アラートログにはORA-19809エラーとあわせてORA-19815エラーが出力されます。
フラッシュ・リカバリ領域に出力されたファイルサイズの総計が初期化パラメータ DB_RECOVERY_FILE_DEST_SIZEを超えたことが本エラーの発生要因です。
このため、ORA-19809エラー発生時には、以下のいずれかの対処を行う必要があります。
RMAN の DELETE コマンドを使用してフラッシュ・リカバリ領域にある不要なファイルを削除します。なお、RMANのDELETEコマンドを使用せずに、OS コマンドを使用してファイルを直接削除した場合、Oracle Database はフラッシュ・リカバリ領域の空き領域が増加したと認識しないため、注意が必要です。
また、不要なファイルがない場合は、DB_RECOVERY_FILE_DEST_SIZE の値を大きくする必要があります。
初期化パラメータファイルの値を変更後にデータベースの再起動を行うか、ALTER SYSTEM コマンドで動的に変更します。
RMAN の CROSSCHECK コマンドにて OS 上で削除されているファイルを Oracle Database に認識させてから、DELETE EXPIRED コマンドにて無効となっているファイルの情報を論理的に削除する必要があります。
アーカイブログファイルを削除した場合の実行例を以下に示します。
$ rman target /
RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all;
ORA-19809 ORA-19804 ORA-19815 フラッシュ・リカバリ領域 DB_RECOVERY_FILE_DEST DB_RECOVERY_FILE_DEST_SIZE