はじめに
オラクルデータベースのフラッシュリカバリ領域が100%となり拡張が必要になったのでここに手順を残します。
ALTER SYSTEM コマンドで動的に変更します。データベースの再起動は不要です。
対象バージョン
Oracle database 19c
フラッシュリカバリとは
バックアップの自動化を実現するためにOracle10g R1から新機能(フラッシュバックリカバリ機能)として用意された格納領域です。
フラッシュリカバリ領域には、アーカイブログファイル、RMAN(Recovery Manager)を使用して取得したバックアップファイル、フラッシュバックデータベース機能(データベース全体を指定された時点の状態に戻す機能)で使うフラッシュリカバリログが格納され、1カ所で管理が可能となり、指定されたサイズ内で自動的に管理がなされます。
変更手順
フラッシュリカバリ領域の使用率確認
フラッシュリカバリ領域の使用率はV$RECOVERY_FILE_DESTビューから確認します。
以下の値は参考例です。SPACE_LIMITとSPACE_USEDが同じ値になっているため、
使用率が100%であることが分かります。
★印について
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 10737418240 10737418240 0 6
フラッシュリカバリ領域のサイズ変更
xxxの部分に変更したいサイズを入力。
SQL>alter system set db_recovery_file_dest_size = xxxG;
簡単ですね。
確認コマンド
★印の部分の値が変更されます。
SQL> show parameter db_recovery_file_dest_size
NAME TYPE VALUE
------------------------------------ -------------------------------- ------------------------------
db_recovery_file_dest_size big integer 10G★
まとめ
フラッシュリカバリ領域は保存方針がきちんと設定してあれば、不要になったファイルは削除されるため、
拡張や手動削除の対応はしなくてもよいはずです。
今回は、なぜ自動で削除されるべきフラッシュリカバリ領域が100%になったのかは原因は残念ながら分かっていません。。
復旧優先させたかったため、今回は暫定的にサイズ拡張で逃げ切りました。
恒久対策としては、原因を突き止めて対策をしたいと思います。
参考情報
https://atmarkit.itmedia.co.jp/ait/articles/0811/27/news141.html
https://docs.oracle.com/cd/E16338_01/server.112/b56311/dynviews_2125.htm
https://docs.oracle.com/cd/E16338_01/server.112/b56311/initparams066.htm