ORACLE的歸檔空間滿導致的監聽故障資料庫無法啟動

germany006發表於2015-11-26
故障現象:
ERROR :  ORA-12514: TNS: 監聽程式當前無法識別連線描述符中請求的服務解決

像平常一樣,使用PLSQL準備做點小實驗,登入自己的測試庫的時候,突然無法連線了
剛開始還以為是監聽的問題,lsnrctl status看了一下發現例項是UNKNOWN的
例項 "ORA11G", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...

然後想去查查資料庫執行狀態,發現連線的是空閒例項,startup無法啟動,報錯如下:

SQL> startup
ORACLE 例程已經啟動。


Total System Global Area  778387456 bytes
Fixed Size                  1374808 bytes
Variable Size             436209064 bytes
Database Buffers          335544320 bytes
Redo Buffers                5259264 bytes
資料庫裝載完畢。
ORA-03113: 通訊通道的檔案結尾
程式 ID: 19936
會話 ID: 125 序列號: 5


然後去檢視alert.log,發現歸檔日誌空間爆滿了。

Errors in file d:\oracle11g\diag\rdbms\ora11g\ora11g\trace\ora11g_arc2_19692.trc:
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 47455232 bytes disk space from 4294967296 limit
ARCH: Archival stopped, error occurred. Will continue retrying
ARC2: Error 19809 Creating archive log file to 'D:\ORACLE11G\FLASH_RECOVERY_AREA\ORA11G\ARCHIVELOG\2015_11_26\O1_MF_1_111_%U_.ARC'
Errors in file d:\oracle11g\diag\rdbms\ora11g\ora11g\trace\ora11g_arc1_4212.trc:
ORA-16038: log 5 sequence# 110 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 5 thread 1: 'D:\ORACLE11G\PRODUCT\GROUP_5_REDO_LOG_05.LOG'
Errors in file d:\oracle11g\diag\rdbms\ora11g\ora11g\trace\ora11g_ora_19936.trc:
ORA-19815: 警告: db_recovery_file_dest_size 位元組 (共 4294967296 位元組) 已使用 100.00%, 尚有 0 位元組可用。


手動刪除了所有物理上的歸檔日誌檔案,(刪之前看了一眼,檔案大小達到3.99G,我給歸檔日誌空間設定的總大小是4G,明顯爆滿了)
rman target /
crosscheck archivelog all; 
delete expired archivelog all; 

再重新啟動資料庫,可以開啟資料庫,恢復正常

SQL> alter database open;


資料庫已更改。


SQL> select status from v$instance;


STATUS
------------
OPEN


總結:
ORACLE資料庫開啟歸檔模式後,雖然能方便進行level級的全增備份策略,但是總會因為歸檔日誌空間爆滿的問題而遇到各種各樣的報錯,所以日常巡檢中一定要多注意觀察歸檔日誌空間的使用情況,在儲存空間足夠的情況下,儘量將歸檔日誌空間設定大一些,同時每天進行備份的時候要及時對過期日誌進行自動清除。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28371090/viewspace-1846926/,如需轉載,請註明出處,否則將追究法律責任。

相關文章