フラッシュバックリカバリの基礎知識Oracleトラブル対策の基礎知識(4)(3/3 ページ)

» 2008年11月27日 00時00分 公開
[森坂康人株式会社コーソル]
前のページへ 1|2|3       

フラッシュリカバリ領域がいっぱいになったときの回避方法

 先に抜粋したマニュアルにあるように、保存方針がきちんと設定してあれば、不要になったファイルは削除されるため、基本的に手動管理は不要です。ただし、フラッシュリカバリ領域の最大サイズが小さかったり、適切な保存方針が設定されていない場合、手動でのメンテナンスが必要になってくることがあります。ここでは例として、フラッシュリカバリ領域がいっぱいになった場合を考えてみましょう。

 フラッシュリカバリ領域の使用率はV$RECOVERY_FILE_DESTビューから確認します。

 ここで表示される項目の内容は次のとおりです。

SPACE_LIMITDB_RECOVERY_FILE_DEST_SIZEで設定しているサイズ
SPACE_USED現在使用済みのサイズ

SQL>select * from v$recovery_file_dest;

NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES ------------------ ----------- ---------- ----------------- --------------- /home/oracle/flash 4294967296 411967488 0 6

 フラッシュリカバリ領域がいっぱいになった場合には、以下のようにフラッシュリカバリ領域が満杯になったことを示すORA-19815がアラートログに出力されます。このとき、インスタンスがダウンしたり、バックアップが取得できなくなることにはなりません。Oracleが自動的に古いファイルから削除してくれますが、あまり好ましいことではないので、手動でのメンテナンスを検討する必要があります。

Fri May 30 04:56:18 2008
Errors in file /opt/oracle/ora102/admin/PROD/bdump/prod_arc1_2847.trc:
ORA-19815: WARNING: db_recovery_file_dest_size of 4294967296 bytes is 
100.00% used, and has 0 remaining bytes available. Fri May 30 04:56:18 2008 ************************************************************************ You have following choices to free up space from flash 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. ************************************************************************

 最も単純な解決方法はDB_RECOVERY_FILE_DEST_SIZEの値を大きくすることですが、不要なファイルがある場合はRMANからDELETEコマンドで削除することが可能です。

 例えば、取得したバックアップセットの削除を行うには次のようにします。

RMAN> delete backup of database;

allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=220 devtype=DISK
List of Backup Pieces BP Key BS Key Pc# Cp# Status Device Type Piece Name ------- ------- --- --- ----------- ----------- ---------- 268 265 1 1 AVAILABLE DISK /home/oracle/flash/PROD/backup set/2008_05_30/o1_mf_nnnd0_TAG20080530T043547_43y1dn4k_.bkp 630 627 1 1 AVAILABLE DISK /home/oracle/flash/PROD/backup set/2008_05_30/o1_mf_nnnd1_TAG20080530T043937_43y1mtr7_.bkp 783 780 1 1 AVAILABLE DISK /home/oracle/flash/PROD/backup set/2008_05_30/o1_mf_nnndf_TAG20080530T044339_43y1vcfl_.bkp
Do you really want to delete the above objects (enter YES or NO)? YES deleted backup piece backup piece handle=/home/oracle/flash/PROD/backupset/2008_05_30/o1_mf_nnnd0_T AG20080530T043547_43y1dn4k_.bkp recid=12 stamp=656051748 deleted backup piece backup piece handle=/home/oracle/flash/PROD/backupset/2008_05_30/o1_mf_nnnd1_T AG20080530T043937_43y1mtr7_.bkp recid=44 stamp=656051978 deleted backup piece backup piece handle=/home/oracle/flash/PROD/backupset/2008_05_30/o1_mf_nnndf_T AG20080530T044339_43y1vcfl_.bkp recid=57 stamp=656052219 Deleted 3 objects

 削除を行った後に、v$recovery_file_destを確認すると、SPACE_USEDが減っていることが分かります。

SQL>select * from v$recovery_file_dest;

NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES ------------------ ----------- ---------- ----------------- --------------- /home/oracle/flash 4294967296 23461888 0 5

 このとき、ファイルの削除方法で注意していただきたいのが、RMANからのDELETEコマンドではなく、OSコマンドを使用して直接ファイルを削除してしまうと、データベース側は、空き領域の拡張を意識しないということです。

 以下のようにOSコマンド(rm)で削除を行ってしまうと、

% pwd
/home/oracle/flash/PROD/archivelog/2008_05_30

% ls o1_mf_1_51_43y4f5yk_.arc o1_mf_1_52_43y4f655_.arc
% rm *

 v$recovery_file_destを確認しても、SPACE_USEDが減っていないことが分かります。

SQL>select * from v$recovery_file_dest;

NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES ------------------ ----------- ---------- ----------------- --------------- /home/oracle/flash 4294967296 23461888 0 5

 これは、RMANリポジトリに管理情報を持っており、この管理情報はRMANからDELETEコマンドでファイルを削除しなければ更新されないためです。

 もし誤ってOSコマンドで削除してしまった場合は、次のようにRMANのCROSSCHECKコマンドを使用して、フラッシュリカバリ領域の実際の物理ファイルとリポジトリの管理情報を比較し、RMANリポジトリから欠落しているファイルをDELETE EXPIREDコマンドで削除してください。

RMAN> crosscheck archivelog all;

released channel: ORA_DISK_1 allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=220 devtype=DISK validation succeeded for archived log archive log filename=/opt/oracle/ora102/product/dbs/1_44_656017842.dbf recid=3 stamp=656045957 validation succeeded for archived log archive log filename=/opt/oracle/ora102/product/dbs/1_45_656017842.dbf recid=4 stamp=656046026 validation succeeded for archived log archive log filename=/opt/oracle/ora102/product/dbs/1_46_656017842.dbf recid=5 stamp=656046137 validation succeeded for archived log archive log filename=/opt/oracle/ora102/product/dbs/arch/1_47_656017842.dbf recid=6 stamp=656046217 validation succeeded for archived log archive log filename=/opt/oracle/ora102/product/dbs/1_48_656017842.dbf recid=7 stamp=656046779 validation failed for archived log archive log filename=/home/oracle/flash/PROD/archivelog/2008_05_30/o1_mf_1_51_43y4f5yk_.arc recid=10 stamp=656054838 validation failed for archived log archive log filename=/home/oracle/flash/PROD/archivelog/2008_05_30/o1_mf_1_52_43y4f655_.arc recid=11 stamp=656054838 Crosschecked 7 objects
RMAN> delete expired archivelog all;
released channel: ORA_DISK_1 allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=220 devtype=DISK
List of Archived Log Copies Key Thrd Seq S Low Time Name ------- ---- ------- - --------- ---- 804 1 51 X 30-MAY-08 /home/oracle/flash/PROD/archivelog/2008_05_30/o1_mf_1_51_43y4f5yk_.arc 805 1 52 X 30-MAY-08 /home/oracle/flash/PROD/archivelog/2008_05_30/o1_mf_1_52_43y4f655_.arc
Do you really want to delete the above objects (enter YES or NO)? YES deleted archive log archive log filename=/home/oracle/flash/PROD/archivelog/2008_05_30/o1_mf_1_51_43y4f5yk_.arc recid=10 stamp=656054838 deleted archive log archive log filename=/home/oracle/flash/PROD/archivelog/2008_05_30/o1_mf_1_52_43y4f655_.arc recid=11 stamp=656054838 Deleted 2 EXPIRED objects

 上記作業を行えば、SPACE_USEDが減っていることが分かります。

SQL>select * from v$recovery_file_dest;

NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES ------------------ ----------- ---------- ----------------- --------------- /home/oracle/flash 4294967296 22282240 0 3

まとめ

 今回解説したポイントをまとめると以下のようになります。これらの項目を踏まえ、フラッシュリカバリ機能の利点を生かした運用を心がけましょう。

  1. フラッシュリカバリ領域を利用する場合は、必ず適切なサイズを見積もり、余裕を持って設定を行ってください
  2. もし領域不足になった場合は、サイズを大きくするか、不要なファイルの削除を検討してください
  3. 削除する場合は、OSコマンドでは削除せず、必ずRMANのDELETEコマンドで削除してください
  4. 誤ってOSコマンドで削除してしまった場合は、RMANよりCROSSCHECKを行い、実在しないファイルをOracleに認識させてください
  5. 空き領域の確保後は、必ず保存方針の見直しを行いDB_RECOVERY_FILE_DEST_SIZEを適切な値に設定してください

 次回は2008年8月22日に出版された『プロとしてのOracleアーキテクチャ入門』の共同執筆者である渡部亮太氏の執筆となります。お楽しみに!


図で仕組みから理解する「現場主義」のOracle入門

プロとしてのOracleアーキテクチャ入門

プロとしてのOracleアーキテクチャ入門

著者:渡部 亮太、森坂 康人
発行:ソフトバンククリエイティブ(2008年8月)
定価:2,730円(税込)
定価:2,730円(税込)
ISBN:978-4-7973-4980-1


 本稿を執筆した森坂氏がOracleアーキテクチャを分かりやすく解説した本が出版されました。

 本書では、例えばデータの格納方式やロック機構の挙動など、プロに求められるOracleの専門的な知識が、図で分かりやすく説明されています。これから実務でOracleに触れるという方にとって、参考になるでしょう。もちろん、本稿で紹介したリカバリ処理にも1章が割かれています。



前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。