oracle歸檔日志占滿系統(tǒng)存儲(chǔ)空間,導(dǎo)致數(shù)據(jù)庫(kù)啟動(dòng)失敗;
存儲(chǔ)空間占滿導(dǎo)致rman工具無(wú)法使用,無(wú)法刪除過期歸檔日志。
告警信息:
1、 存儲(chǔ)空間滿,/opt占用率達(dá)到100%;
2、無(wú)法進(jìn)入數(shù)據(jù)庫(kù)操作;
3、無(wú)法使用rman工具清除過期歸檔日志。
1、通過命令檢查存儲(chǔ)空間被哪個(gè)目錄占用了,最深查詢到第八層目錄:du -h --max-depth=8。查詢到/opt/oracle/archivelog有142G這么大,打開看有3000+的dbf文件,通過文件目錄結(jié)構(gòu)分析,此為數(shù)據(jù)庫(kù)歸檔文件。
2、刪除數(shù)據(jù)庫(kù)歸檔文件。
首先切換oracle用戶
su – oracle
cd /opt/oracle/archivelog
執(zhí)行下面命令刪除7天以前的歸檔日志:
find . -xdev -mtime +7 -name "*.dbf" -exec rm -f {} \;
3、執(zhí)行rman邏輯上刪除過期日志
rman
RMAN> connect target /
>crosscheck archivelog all;
>delete expired archivelog all;
>quit
4、關(guān)閉數(shù)據(jù)庫(kù)歸檔日志:
登錄數(shù)據(jù)庫(kù):!sql
SQL> shutdown immediate
啟動(dòng)了實(shí)例,并加載了數(shù)據(jù)庫(kù) SQL> startup mount
歸檔->非歸檔 SQL> alter database noarchivelog;
檢查是否成功 SQL> archive log list
5、啟動(dòng)數(shù)據(jù)庫(kù),完成。
SQL>alter database open;
此后,不再生成歸檔日志。
打開歸檔日志時(shí),DBA定時(shí)清理歸檔文件,避免再次占滿;
如不使用,關(guān)閉歸檔日志。