Oracle歸檔日志若不定期清理將占用很大存儲空間,在Linux環境下我們可以用shell腳本實現清理(Window下用bat同理)。
1. 查看歸檔日志存放位置
用oracle用戶登錄
[oracle@localhost data]$ sqlplus sys/password as sysdba SQL> show parameter recover;
如果更改過歸檔日志路徑,請執行archive log list;
查看:
SQL> archive log list;
2. 創建歸檔日志存放路徑
[oracle@localhost db_1]$ mkdir /home/oracle/del_log [oracle@localhost db_1]$ mkdir /home/oracle/del_log/log [oracle@localhost db_1]$ chown -R oracle:oinstall /home/oracle/del_log/log
3. 創建shell腳本
路徑:/home/oracle/del_log
[oracle@localhost del_log]$ vi del_arc.sh #添加以下內容 source ~/.bash_profile #記錄歸檔刪除的日志 exec >> /home/oracle/del_log/log/del_arch`date +%F-%H`.log $ORACLE_HOME/bin/rman target / <<EOF crosscheck archivelog all; #檢查歸檔 delete noprompt expired archivelog all; #刪除無效歸檔 delete noprompt archivelog until time 'sysdate-7'; #刪除7天前日志 exit; EOF
[oracle@localhost del_log]$ chmod 777 del_arc.sh #賦予執行權限
[oracle@localhost del_log]$ ./del_arc.sh #手工執行測試是否成功
[oracle@localhost del_log]$ ll log #如果產生了log文件,則測試成功
4. 添加定時任務
[oracle@localhost del_log]$ crontab -l # 查詢已有調度任務 [oracle@localhost del_log]$ crontab -e # 編輯調度任務 # 每天凌晨1點執行,並將執行結果保存在task.log中 00 1 * * * sh /home/oracle/del_log/del_arc.sh >> /data/oracle/del_log/task.log 2>&1 &
參考:
https://blog.csdn.net/mgxiaomage/article/details/73863375
https://www.jianshu.com/p/8c13a4c9539e
https://blog.csdn.net/weixin_45558989/article/details/101293884