先に抜粋したマニュアルにあるように、保存方針がきちんと設定してあれば、不要になったファイルは削除されるため、基本的に手動管理は不要です。ただし、フラッシュリカバリ領域の最大サイズが小さかったり、適切な保存方針が設定されていない場合、手動でのメンテナンスが必要になってくることがあります。ここでは例として、フラッシュリカバリ領域がいっぱいになった場合を考えてみましょう。
フラッシュリカバリ領域の使用率はV$RECOVERY_FILE_DESTビューから確認します。
ここで表示される項目の内容は次のとおりです。
SPACE_LIMIT=DB_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
今回解説したポイントをまとめると以下のようになります。これらの項目を踏まえ、フラッシュリカバリ機能の利点を生かした運用を心がけましょう。
次回は2008年8月22日に出版された『プロとしてのOracleアーキテクチャ入門』の共同執筆者である渡部亮太氏の執筆となります。お楽しみに!
プロとしてのOracleアーキテクチャ入門
著者:渡部 亮太、森坂 康人
発行:ソフトバンククリエイティブ(2008年8月)
定価:2,730円(税込)
定価:2,730円(税込)
ISBN:978-4-7973-4980-1
本稿を執筆した森坂氏がOracleアーキテクチャを分かりやすく解説した本が出版されました。
本書では、例えばデータの格納方式やロック機構の挙動など、プロに求められるOracleの専門的な知識が、図で分かりやすく説明されています。これから実務でOracleに触れるという方にとって、参考になるでしょう。もちろん、本稿で紹介したリカバリ処理にも1章が割かれています。
Copyright © ITmedia, Inc. All Rights Reserved.