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

1、報錯信息html

前幾天網站忽然訪問不了,而且報了以下錯誤:python

ora-27101: shared memory realm does not existsql

ora-01034: oracle not available 11g數據庫

ORA-24324: service handle not initializedvim


緣由:因爲數據庫歸檔日誌滿了,不能繼續往數據庫裏寫數據。oracle


2、查看歸檔日誌大小app

su - oracleide

sqlplus / as sysdba網站

show parameter recover

1.png

可查看到歸檔日誌目錄爲:/u01/app/oracle/fast_recovery_area/******/archivelogspa

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


3、擴大歸檔日誌大小

alter system set db_recovery_file_dest_size=100G;

2.png


4、清理歸檔日誌

擴大後還需設置定時計劃清理歸檔日誌,須要切換到oracle帳號執行命令

rman target /

RMAN> crosscheck archivelog all;

RMAN> delete expired archivelog all;

RMAN> delete archivelog until time 'sysdate-3'

 

上面三條命令的解釋:

一、第一條命令能夠把無效的expired的archivelog標出來。

二、第二條命令直接所有刪除過時的歸檔日誌。

三、第三條命令直接刪除三天前全部的歸檔日誌。

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


5、設置自動腳本

一、編寫腳本

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


二、添加到計劃任務

crontab -e

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

service crond restart

相關文章
相關標籤/搜索