Oracle下定時刪除歸檔日志腳本


一、報錯信息

前幾天網站突然訪問不了,並且報了如下錯誤:

ora-27101: shared memory realm does not exist

ora-01034: oracle not available 11g

ORA-24324: service handle not initialized


原因:由於數據庫歸檔日志滿了,不能繼續往數據庫里寫數據。


二、查看歸檔日志大小

su - oracle

sqlplus / as sysdba

show parameter recover


可查看到歸檔日志目錄為:/u01/app/oracle/fast_recovery_area/******/archivelog

可以查看該目錄的大小,對比數據庫設置的日志空間,該目錄大小不能大於數據庫設置的空間。


三、擴大歸檔日志大小

alter system set db_recovery_file_dest_size=100G;

四、清理歸檔日志

擴大后還需設置定時計划清理歸檔日志,需要切換到oracle賬號執行命令

rman target /

RMAN> crosscheck archivelog all;

RMAN> delete expired archivelog all;

RMAN> delete archivelog until time 'sysdate-3'

 

上面三條命令的解釋:

1、第一條命令可以把無效的expired的archivelog標出來。

2、第二條命令直接全部刪除過期的歸檔日志。

3、第三條命令直接刪除三天前所有的歸檔日志。

參考:https://www.2cto.com/database/201308/235338.html


五、設置自動腳本

1、編寫腳本

su - oracle        //切換到oracle用戶下執行操作

cd /u01/app

vim arcclear.sh

#!/usr/bin
rman target / <<EOF
delete force noprompt archivelog all completed before 'sysdate-3';
exit;
EOF

chmod +x arcclear.sh


2、添加到計划任務

crontab -e

30 1 * * * sh /u01/app/arcclear.sh >> /u01/app/arcclear.log

service crond restart


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM