ORA-00257歸檔日志寫(xiě)滿的解決方法

ORA-00257歸檔日志寫(xiě)滿的解決方法


背景:

在前一篇博客中我們提到了如何啟動(dòng)或關(guān)閉oracle的歸檔(ARCHIVELOG)模式,在我成功設(shè)定數(shù)據(jù)庫(kù)為歸檔模式以后, 第二天再次嘗試連接數(shù)據(jù)庫(kù),報(bào)錯(cuò):ORA-00257。在網(wǎng)上找到了一圈資料,有些是說(shuō)歸檔日志寫(xiě)滿,刪除歸檔日志。有些是說(shuō)閃回日志寫(xiě)滿,關(guān)閉閃回日志。主要參考文獻(xiàn)有以下:


刪除歸檔日志文件的方法:http://www.blogjava.net/kuuyee/archive/2013/05/15/399287.html

惜分飛大大的博客:http://www.xifenfei.com/655.html

關(guān)閉閃回日志:http://uhesse.com/2010/06/25/turning-flashback-database-on-off-with-instance-in-status-open/

http://blog.csdn.net/panys/article/details/3838846

http://jingyan.baidu.com/article/425e69e6b142d1be15fc16dc.html

http://www.itpub.net/thread-784621-2-1.html

http://gundam.blog.51cto.com/1845787/1272843

http://junfengwang060905.blog.163.com/blog/static/94223330201111524912142/


首先我認(rèn)為是閃回日志寫(xiě)滿,但是查了數(shù)據(jù)庫(kù)以后發(fā)現(xiàn)我并沒(méi)可有開(kāi)啟閃回日志,那么就是歸檔日志文件寫(xiě)滿的緣故了。使用以下幾個(gè)命令可以看出當(dāng)前歸檔日志文件的使用情況:

select*from v$recovery_file_dest;selectsum(percent_space_used)*3/100from v$flash_recovery_area_usage;select*from v$flash_recovery_area_usage;select*fromv$version;

歸檔日志文件目錄、最大值(已經(jīng)設(shè)定為20G)、當(dāng)前使用值

可以看到ARCHIVED LOG的使用率是3.84%,這是因?yàn)槲乙呀?jīng)刪除掉歸檔日志文件了。在沒(méi)有刪除歸檔日志之前是99.46這樣打的數(shù)字,表明我們的歸檔日志已經(jīng)使用了大部分的空間。

所以進(jìn)入rman程序刪除歸檔日志

rman target sys/pass@prjdbcrosscheck archivelog all;deletearchivelog until time'sysdate';--刪除所有日志deleteexpired archivelogall;--刪除過(guò)期日志

深層分析

后來(lái)我想這樣手動(dòng)刪除也不是個(gè)辦法總得讓系統(tǒng)自動(dòng)刪除。后來(lái)就做了數(shù)據(jù)庫(kù)備份腳本。執(zhí)行的備份策略如下:

每周執(zhí)行增量0的備份,順便備份歸檔日志,并且刪除過(guò)期歸檔日志

每天執(zhí)行增量1的備份,順被備份歸檔日志,并且刪除過(guò)期歸檔日志。

因?yàn)槲覜](méi)有設(shè)定歸檔日志的有效期,所以一檔完成增量備份,那么之前的所有歸檔日志都會(huì)被刪除,相當(dāng)于只保留一天的歸檔日志。在執(zhí)行這個(gè)備份策略以后,發(fā)現(xiàn)還是會(huì)出現(xiàn)ORA-00257這樣的錯(cuò)誤。這個(gè)時(shí)候已經(jīng)不是簡(jiǎn)單刪除歸檔日志的問(wèn)題了,因?yàn)楫?dāng)前的歸檔日志目錄連一天的歸檔日志都發(fā)布下。所以考慮擴(kuò)大歸檔日志目錄,參考:http://langzhiwang888.iteye.com/blog/1675033

SQL>altersystemsetdb_recovery_file_dest_size=21474836480;---設(shè)置使用空間大小(20*1024*1024*1024),20GB

System altered

SQL>show parameter db_recovery_file_dest;---查看歸檔日志路徑限額

此時(shí)歸檔日志目錄最大值就變成了20G。按照這樣的設(shè)定再次重啟oralce。

實(shí)例

最近在進(jìn)行歷史數(shù)據(jù)導(dǎo)入的工作。要往我的數(shù)據(jù)庫(kù)當(dāng)中導(dǎo)入2G的歷史記錄,插入記錄有幾百萬(wàn)條。此時(shí)數(shù)據(jù)庫(kù)處于歸檔模式,對(duì)于每一個(gè)插入操作都會(huì)記錄到歸檔日志當(dāng)中去。在執(zhí)行這個(gè)歷史導(dǎo)入操作后3個(gè)小時(shí),歸檔日志就寫(xiě)滿了。此時(shí)我的問(wèn)題就來(lái)了,如果歸檔日志寫(xiě)滿的,我們的歷史導(dǎo)入操作還能正常進(jìn)行嗎?是否還能往數(shù)據(jù)庫(kù)當(dāng)中insert數(shù)據(jù)。在跟公司DBA請(qǐng)教一番以后得到答復(fù),如果處于歸檔模式,并且歸檔日志寫(xiě)滿,那么我的歷史數(shù)據(jù)導(dǎo)入操作會(huì)block中,直到我清空歸檔日志以后導(dǎo)入工作才能再進(jìn)行。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容