oralce日誌文件無法歸檔錯誤ORA-16038解決方法

最近使用oracle時突然發現如下錯誤

ORA-16038: 日誌 2 序列號 67 無法歸檔

ORA-19809: 超出了恢復文件數的限制

ORA-00312: 聯機日誌 2 線程 1:

'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'

導致oracle無法啓動,上網查了下原因,發現

select r.SPACE_USED/r.SPACE_LIMIT from v$recovery_file_dest r;

恢復文件空間不夠了,網上提供的解決方法:

1.將歸檔設置到其他目錄,修改alter System set log_archive_dest;

2.轉移或者刪除閃回恢復區裏的歸檔日誌;

3.增大閃回恢復區,alter System set db_recovery_file_dest_size=5G;

4.手動將未歸檔的Redo日誌進行歸檔。執行以下命令手動將未歸檔的Redo日誌進行歸檔

alter system archive log all to '/archive1'

to參數指定的位置可以是之前的歸檔位置,也可以是其他位置,oracle操作系統用戶在這個位置有讀寫的權限。執行完這個命令之後所有未歸檔的日誌都被歸檔,之後很順利就執行了alter database open命令打開了數據庫。



我選擇使用第二方法來解決我的oracle問題。

首先使用刪除閃回恢復區裏的歸檔日誌,以便讓oracle儘快正常工作,

SQL> startup force
ORACLE 例程已經啓動。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             117443460 bytes
Database Buffers          486539264 bytes
Redo Buffers                7135232 bytes
數據庫裝載完畢。
ORA-16038: 日誌 3 序列號 1807 無法歸檔
ORA-19809: 超出了恢復文件數的限制
ORA-00312: 聯機日誌 3 線程 1: 'E:\ORADATA\MDC\REDO03.LOG'
查看v$log
SQL> select group#,sequence#,archived,status from v$log;

   GROUP#  SEQUENCE# ARCHIV STATUS
---------- ---------- ------ --------------------------------
        1       1808 NO     INACTIVE
        2       1807 NO     INACTIVE
        3       1809 NO     CURRENT
看到組2是非當前狀態,並且沒有歸檔,使用參考文章中的處理非歸檔文件的方法.
SQL> alter database clear unarchived logfile group 2;

數據庫已更改。

啓動數據庫,這個啓動成功.
SQL> alter database open;

數據庫已更改。

爲了防止歸檔日誌再次佔滿空間,需要定期清理歸檔日誌。

在rman下執行crosscheck archivelog all;檢查所有的歸檔日誌

delete noprompt archivelog all backed up 1 times to device type disk;將已經備份過一次的歸檔日誌全部清除。

可以在備份腳本的最後加上這幾行代碼,對歸檔日誌進行清理,以徹底解決這個問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章