ORA-00257歸檔日志寫滿的解決方法 - xwdreamer - 博客園


select*from v$recovery_file_dest;

select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;

select * from v$flash_recovery_area_usage;

select * from v$version;

歸檔日志文件目錄、最大值(已經設定為20G)、當前使用值

dc1ac4e259a544a99439716aad2077c3

可以看到ARCHIVED LOG的使用率是3.84%,這是因為我已經刪除掉歸檔日志文件了。在沒有刪除歸檔日志之前是99.46這樣打的數字,表明我們的歸檔日志已經使用了大部分的空間。

11774e76ef704ffab5e2a68ab84062c8

所以進入rman程序刪除歸檔日志

rman target sys/pass@prjdbcrosscheck archivelog all;

delete archivelog until time 'sysdate'; --刪除所有日志

delete expired archivelog all;--刪除過期日志

深層分析

后來我想這樣手動刪除也不是個辦法總得讓系統自動刪除。后來就做了數據庫備份腳本。執行的備份策略如下:

  1. 每周執行增量0的備份,順便備份歸檔日志,並且刪除過期歸檔日志
  2. 每天執行增量1的備份,順被備份歸檔日志,並且刪除過期歸檔日志。

因為我沒有設定歸檔日志的有效期,所以一檔完成增量備份,那么之前的所有歸檔日志都會被刪除,相當於只保留一天的歸檔日志。在執行這個備份策略以后,發現還是會出現ORA-00257這樣的錯誤。這個時候已經不是簡單刪除歸檔日志的問題了,因為當前的歸檔日志目錄連一天的歸檔日志都發布下。所以考慮擴大歸檔日志目錄,參考:http://langzhiwang888.iteye.com/blog/1675033

SQL>alter system set db_recovery_file_dest_size=21474836480;---設置使用空間大小(20*1024*1024*1024),20GBSystem alteredSQL> show parameter db_recovery_file_dest;---查看歸檔日志路徑限額

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

實例

最近在進行歷史數據導入的工作。要往我的數據庫當中導入2G的歷史記錄,插入記錄有幾百萬條。此時數據庫處於歸檔模式,對於每一個插入操作都會記錄到歸檔日志當中去。在執行這個歷史導入操作后3個小時,歸檔日志就寫滿了。此時我的問題就來了,如果歸檔日志寫滿的,我們的歷史導入操作還能正常進行嗎?是否還能往數據庫當中insert數據。在跟公司DBA請教一番以后得到答復,如果處於歸檔模式,並且歸檔日志寫滿,那么我的歷史數據導入操作會block中,直到我清空歸檔日志以后導入工作才能再進行。


免責聲明!

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



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