ORA-19815: WARNING: db_recovery_file_dest_size閃回區爆滿問題處理

問題描述:有一個數據庫起不來了,根據層層排查,是因爲歸檔設置在了閃回區,文件的大小已經超出了閃回區限制。最後直接給數據庫拖掛

環境:windows server2012 , oracle 19c,單機

 

1.sqlplus 連接到空閒實例,發現數據庫已經掛掉,直接startup 數據,只能到mount狀態

 

 

 

2.hang住一會開始報錯

ORA-16038: log 2 sequence# 1325 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 2 thread 1: 'O:\ORACLE_DATA\SYNVNACDB\REDOo2.LOG'
ORA-00312: online log 2 thread 1: 'F:\FAST_RECOVERY_AREA\SYNVNACDB\REDOo2.LOG'

 

 

 

 

3. 日誌組log 2 ,序列號爲sequence #1325 號日誌不能被歸檔,後面是有查到原因是因爲歸檔在閃回區,這裏無法被歸檔,前期我們還沒有查到是這個原因,只能清理日誌組,來處理當前不能被歸檔的日誌

這個時候數據庫是可以啓動到mount狀態的,在mount狀態下操作

SQL> startup mount;

查看v$log日誌視圖
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 1327 YES INACTIVE
2 1325 NO CURRENT
3 1326 YES INACTIVE

可以知道,該組1是非當前狀態,而且已經歸檔。

3、先清理沒有被歸檔的日誌,這裏清理了有問題的log2,所幸清理完數據庫可以open了
SQL>alter database clear unarchived logfile group 2;

如果不成功過,用CLEAR命令重建該日誌文件
SQL>alter database clear logfile group 3;

4、打開數據庫,重新備份數據庫
SQL>alter database open;

5、重啓數據庫來驗證是否存在問題
SQL>shutdown immediate
SQL>startup

 

4.重啓完數據庫可以正常起來了,但是在切換歸檔的時候又出現了報錯,切換歸檔時一直卡着,到後臺看alert日誌發現瞭如下報錯

 

 

 

ORA-19815: WARNING: db_recovery_file_dest_size of 73014444032 bytes is 100.00% used

 

發現其最終原因還是歸檔設置在了閃回區內,閃回區目前大小爲70G,調整方法爲可以在閃回區內刪除一下舊的歸檔,或者在線擴大一下閃回區的大小,我們盤符的空間充足,兩種方式同步進行

解決方式:

alter system set db_recovery_file_dest_size=100G scope=both;

手動刪除了一些歸檔文件,去切換歸檔還是沒有成功,應該是數據庫內存還是認爲空間不夠。在線擴充閃回,擴充完成,歸檔就立馬切換成功

 

5.全部做完一定要做一次數據庫的全備,如果歸檔設置在閃回區內,一定要加強對閃回區的空間監控。

查看閃回區的使用情況

select file_type, percent_space_used as used,percent_space_reclaimable as reclaimable, number_of_files as "number" from v$flash_recovery_area_usage;  

 

 

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