今天開啟oracle出現如下錯誤訊息,跟archive log有關係,紀錄解決的方法及過程。

SQL> startup
ORACLE 執行處理已啟動.

Total System Global Area  612368384 bytes
Fixed Size                  1250452 bytes
Variable Size             180357996 bytes
Database Buffers          427819008 bytes
Redo Buffers                2940928 bytes
資料庫已掛載.
ORA-16038: 無法存檔日誌 1 序號 47
ORA-19809: 超過復原檔案限制
ORA-00312: 線上日誌 1 繫線 1:
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'
ORA-00312: 線上日誌 1 繫線 1:
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01B.LOG'

這時候別慌,查一下archive log的size跟路徑
SQL>  show parameter DB_RECOVERY

NAME                          TYPE        VALUE
----------------------------- -----------   ----------------------------------------------
db_recovery_file_dest          string       D:\oracle\product\10.2.0/flash_recovery_area
db_recovery_file_dest_size  big integer  2G

原來只有2G不夠,假設是真的在戰場上的oracle,應該是不會只有2G的,應該也是很大很大了,可能沒有定期刪除archive的關係

步驟1:
先把某個期間前的archivelog刪除,假設只保留2天內的archivelog

SQL> $rman target /
RMAN> DELETE force noprompt ARCHIVELOG UNTIL TIME 'SYSDATE-2' ;

步驟2.
檢討archive log空間,若是硬碟還夠大就給他大一點

SQL>ALTER SYSTEM SET db_recovery_file_dest_size=100g scope=both;

步驟3.
檢視是否有定期刪除ARCHIVE LOG排程
以下是批次檔的內容,內容是保留2天內archive,請自行修正保留天數,建立後加入排程即可。

@ECHO OFF
@SET RMANFN=C:\RMAN.TXT
@ECHO delete force archivelog until time 'sysdate - 2'; >%RMANFN%
@ECHO exit; >>%RMANFN%
@rman target=/ cmdfile=%RMANFN%
@DEL %RMANFN% 

 

參考網站:
Database Startup fails with error ORA-16038,ORA-19809, ORA-00312

全站熱搜

味味A 發表在 痞客邦 留言(0) 人氣()