因歸檔日誌無法歸檔造成的 oracle shutdown immediate無法關閉

lnwxzyp發表於2009-11-21
  今天在維護的時候,發現一個地市的資料庫出現了歸檔日誌滿的錯誤,由於這個資料庫我是部署了自動清理歸檔的指令碼,並且每天的晚上21點就會自動清理,但是最近已經出現過兩次歸檔日誌滿的問題,讓人很是頭疼,今天突然想到,歸檔的路徑存放好像是預設的閃回區路徑 recycle,於是檢視路徑:
SQL> SHOW PARAMETER LOG_ARCHIVELOG_DEST_1
返回的是空值,說明是預設的路徑,以前是因為安裝的時候進行的預設的安裝,後來修改引數的時候並沒有對歸檔的路徑進行修改,只是對閃回區的大小進行了擴充,達到了22G,最近因為每天新增的記錄持續的增加,因此才會出現歸檔日誌滿的錯誤,於是我馬上想到要修改歸檔日誌的離線路徑,首先看到D盤已經沒有空閒空間了,對空間進行了清理之後,進入RMAN進行清理,完成之後發現資料庫已經可以登入了,登入之後我在這裡執行了一個釋放歸檔檔案的語句
alter system archive log current
執行之後提示ORA-16038:日誌3序列號62314無法歸檔
ORA-19809:超出了恢復檔案數的限制,在這裡我沒有理會這個提示,而是修改了pfile的引數檔案。然後執行關閉
首先是關閉了監聽器
lsnrct stop
完成之後接著開始關閉資料庫 
SQL>shutdown immediate
執行之後就一直處於關閉狀態,大約過了十分鐘還是沒有關閉,於是按下ctrl+c強制取消,然後重新以oracle dba許可權登入,這個時候便提示oracle not available,隨便輸入一個 
archive log list 
檢視歸檔模式 這時又提示ORA-01012: not logged on
於是強制重啟 
SQL>startup force
重啟之後在open階段出現了錯誤
ORA-16038:日誌3序列號62314無法歸檔
ORA-19809:超出了恢復檔案數的限制
ORA-00312:聯機日誌3執行緒 1:E:\ORADATA\REDO03.LOG'
資料庫無法開啟,這個時候想到剛開始D盤也就是歸檔日誌存放的目標位置,容量為空,而閃回區實際上並沒有滿,因此在我清理了一些無用的備份之後,資料庫就已經可以登入了,而又記起來後面的ramn裡面的操作幾乎全是驗證失敗,這就是說我在ramn裡面的操作並沒有清理閃回區的歸檔,然後當D盤有了空間以後redo又開始往閃回區離線歸檔日誌, 知道了這一點,就容易解決了,首先是手動刪除了閃回區的歸檔檔案,然後登入ramn,登入之後提示oracle例項未開啟,不知道會不會由於未開啟而無法驗證和刪除, 執行 
crosscheck archivelog all;
發現是可以進行驗證的,之後的 
delete expired archivelog all;
也順利完成,這個時候資料庫就可以正常的open了,然後再次執行關閉,這次資料庫很快就關閉了,然後
執行 create spfile=‘PATH’ from pfile='PATH'; 在這裡我之前已經將LOG_ARCHIVELOG_DEST_1的路徑修改到了容量更大的E盤下,以後歸檔日誌滿的問題就可以得到有效的解決了。

在這裡也是一次教訓,以後大家在遇到歸檔日誌無法歸檔的時候一定要先將歸檔進行離線之後才能執行關閉資料庫的操作,否則可能會帶來一些麻煩。

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

相關文章