今天開啟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
留言列表