Oracle の アーカイブログを削除する方法です。
アーカイブログファイルはOS上で削除するとOracleの制御ファイルとの整合性が取れなくなってしまうのでRMANコマンドで削除するようにしましょう。
archive フォルダーにはたくさんファイルがありますがこれを直接消してはいけません。

クリックで拡大
もし、間違って直接削除してしまった場合は「
アーカイブファイルをフォルダーから直接削除した場合の対処方法」を参照してください。
【操作手順】
- コマンドプロンプトを起動し、RMANを起動します。
以下のコマンドを実行します。
クリックで拡大
- 日付を指定して削除する場合は以下のコマンドを実行します。
"今日から起算して指定した日数前" 以前のアーカイブログを削除します。
delete archivelog until time 'sysdate - 日数';
クリックで拡大
- 対象となるアーカイブログの一覧がひたすら表示されます。
削除確認のメッセージが表示されますので "YES" と入力して「ENTER」キーを押下します。
クリックで拡大
- 削除対象のログが存在しなかった場合は以下のように表示されます。
クリックで拡大
- アーカイブログのシーケンス番号を指定して削除する場合は以下のように指定します。
指定したシーケンス番号以前のアーカイブファイルを削除します。
delete archivelog until sequence シーケンス番号;
- 指定したスレッド番号のアーカイブファイルで、指定したシーケンス番号以前のアーカイブファイルを削除する場合は以下のように指定します。
delete archivelog until sequence シーケンス番号 thread スレッド番号;
- すべてのアーカイブログを削除する場合は以下のように指定します。
- 削除時に確認メッセージを表示しないようにするには以下のように指定します。
上記のそれぞれの構文は同じで delete の後に「noprompt」を指定します。
delete noprompt archivelog ・・・
【タスクで実行する方法】
- タスクスケジューラでRMANコマンドを自動実行する方法です。
RMANコマンドを記述したファイルを作成します。
以下の内容を記述して「archivelog_delete.sql」という名前で保存します。
delete noprompt archivelog until time 'sysdate - 7';
上記のコマンドを実行するbatファイルを作成します。
同じフォルダ内にある「archivelog_delete.sql」を実行し、「archivelog_delete.log」にログ出力を行う例です。
以下の内容を記述して「archivelog_delete.bat」という名前で保存したものをタスクで自動実行することができます。
set current_dir=%~dp0
rman target / cmdfile "%current_dir%\archivelog_delete.sql" log "%current_dir%\archivelog_delete.log"