天天看點

Oracle 資料庫删除過期歸檔

#!/bin/bash

echo "----------------------------------------`date`---------------------------------------"

source ~/.bash_profile

delarchtime=`date +"20%y%m%d%h%m%s"`

rman_log_file=/home/oracle/del_arch_${delarchtime}.log

rman target / <<eof >> $rman_log_file

crosscheck archivelog all;

delete noprompt expired archivelog all;

delete noprompt archivelog all completed before 'sysdate-7';

eof

echo -e "\n"

echo "------------------------------------ finished ------------------------------------"

30 2 * * 0 /home/oracle/zzh/del_arch.sh

30 2 * * 0 nohup /home/oracle/zzh/log/delete_arch.sh >/dev/null 2>&1 &

eg:

delete noprompt archivelog until time "to_date('2019-09-02','yyyy-mm-dd')";

delete noprompt archivelog until time "to_date('2016-09-14 18:00:00','yyyy-mm-dd hh24:mi:ss')";

delete archivelog until sequence 16;

delete archivelog from time 'sysdate-1';    --> 注意這個指令,删除系統時間1天以内到現在的歸檔日志

delete noprompt archivelog all completed before 'sysdate';  --> 該指令清除目前所有的歸檔日志

delete noprompt archivelog all completed before 'sysdate-0';  --> 該指令清除目前所有的歸檔日志

delete noprompt archivelog all; --> 該指令清除目前所有的歸檔日志

delete force archivelog all completed before 'sysdate-1/24';    --> 清理一個小時前的歸檔日志