この記事の目的
本記事では、Oracleデータベースのアーカイブログファイル(例:arch1_*.dbf
, *.arc
)を RMAN(Recovery Manager)を使って安全に削除し、ディスク容量を確保するまでの流れをまとめます。
対象読者:
- Oracle入れてるサーバのディスク容量で困っている方
- FRA(フラッシュリカバリエリア)を使っている構成の運用者
-
rman target /
での削除操作に慣れていない方
✅ 前提環境
- OS:Linux
- Oracle 11c(例:
/u01/app/oracle/product/11.0.1/dbhome_1
) - アーカイブログの自動バックアップを運用
- FRAまたは任意のアーカイブ出力先あり
🔧 Step 1:環境変数の設定(oracleユーザーで実施)
以下コマンドで今回必要な変数が設定されてるか確認
echo $ORACLE_HOME
echo $ORACLE_SID
echo $PATH
設定されていなければ以下のように設定する(例)
export ORACLE_HOME=/u01/app/oracle/product/11.0.1/dbhome_1
export ORACLE_SID=ORCL
export PATH=$ORACLE_HOME/bin:$PATH
🔐 Step 2:RMAN に接続
rman target /
🔍 Step 3:削除対象を確認(一覧表示)
例:2024年分のアーカイブログ一覧を確認
LIST ARCHIVELOG UNTIL TIME "TO_DATE('2025-01-01','YYYY-MM-DD')";
🧹 Step 4:実際に削除(削除対象に問題がなければ)
DELETE ARCHIVELOG UNTIL TIME "TO_DATE('2025-01-01','YYYY-MM-DD')";
※削除対象一覧が表示され、YES/NO の確認が入ります。YES を入力すると実ファイルも削除されます。
ここで一度削除されたか確認、削除されていれば出てこない
LIST ARCHIVELOG UNTIL TIME "TO_DATE('2025-01-01','YYYY-MM-DD')";
🔄 Step 5:整合性処理(削除済みファイルがカタログに残っている場合なので任意)
CROSSCHECK ARCHIVELOG ALL;
DELETE EXPIRED ARCHIVELOG ALL;
❗ 手動削除したい場合(RMANに認識されていないファイル)
自分の場合はrmanから参照はしなくなったが実ファイルまで削除されなかったので
実ファイルは手動で削除しディスク容量を開けた
※rmanから先に消してあげないとORACLEで整合性とれないエラーが出るので実ファイルから削除はおすすめしない
対象ファイルはarch1_.dbfや.arcファイルなど
※/path/to/archive は実際のパスに置き換えてください(例:/u01/arch)
# 1. ダミーの比較用タイムスタンプファイルを作成
touch -t 202401010000 start_2024
touch -t 202501010000 end_2024
# 2. 確認(削除対象の一覧)
find /path/to/archive -name "arch1_*.dbf" -newer start_2024 ! -newer end_2024 -ls
# 3. 削除(OKなら)
find /path/to/archive -name "arch1_*.dbf" -newer start_2024 ! -newer end_2024 -exec rm -f {} \;
# 4. ダミーファイルの削除
rm -f start_2024 end_2024
振り返り
現場が古い開発環境で整備されてなく、このように開発サーバー使用時にディスク容量満杯の問題が起きて
その環境にログインできなかったりサーバ上でテストできなかったりで調べています
古くからあるのでむやみに手を付けていいかわからない人もいると思うので
似たような人の参考になればと思います
※自分は開発環境なので比較的今回紹介の手順はフットワーク軽いと思います、もし本番環境での参考の場合は
アーカイブファイルは当然バックアップで使うと思いますので他のところ削除検討がいいかもです