一、報錯信息
前幾天網站突然訪問不了,並且報了如下錯誤:
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