ORA-00257 歸檔日誌錯誤解決方案
在實際項目中遇到了ORA-00257錯誤(空間不足錯誤),通過尋找資料,絕大部分說這是由于歸檔日誌太多,佔用了全部的硬碟剩餘空間導致的,通過簡單刪除日誌或加大儲存空間就能夠解決。
診斷過程:
(1)查看資料庫REDOLOG情況:
SQL> conn /@dmsasc as sysdba
SQL> select * from v$log;
發現ARC欄位值為NO,表示系統沒法自動做歸檔。
檢查一下歸檔目錄和log sequence:
SQL> archive log list;
(2)手工切換日誌:
SQL> alter system switch logfile;
ORA-01013: 使用者請求取消當前的操作
在等待長時間沒反應後,中斷操作,手工切換日誌沒有成功。
(3)查看FLASH_RECOVERY_AREA空間使用方式:
SQL> select * from v$recovery_file_dest;
計算flash recovery area已經佔用的空間:
SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;
FLASH_RECOVERY_AREA空間已使用了2.35GB
SQL> select * from v$flash_recovery_area_usage;
歸檔日誌空間已使用了多少百分比,發現ARCHIVELOG占近93.96%,這樣FLASH_RECOVERY_AREA空間的空間已經被完全佔據了。
(4)找到recovery目錄:
SQL> show parameter recover;
解決過程:
(1)根據資料庫目前可用儲存空間為200GB、FLASH_RECOVERY_AREA空間為8GB的實際情況,把FLASH_RECOVERY_AREA的空間修改為20GB。
SQL> alter system set DB_RECOVERY_FILE_DEST_SIZE=20g;
SQL> select * from v$recovery_file_dest;
(2)再檢查日誌狀態,發現REDOLOG處於正常的歸檔狀態:ARC YES
SQL> select * from v$log;
SQL> select * from v$flash_recovery_area_usage;
(3)轉移或清除對應的歸檔日誌, 刪除一些不用的日期目錄的檔案,注意保留最後幾個檔案,注意在刪除歸檔日誌後,必須用RMAN維護控制檔案,否則空間顯示仍然不釋放。
rman target sys/XXXX@XXX (資料庫使用者名稱/密碼)
RMAN> crosscheck archivelog all; //檢查一些無用archivelog
RMAN> delete expired archivelog all; //刪除到期歸檔
delete archivelog until time 'sysdate-1'; //刪除截止到前一天的所有archivelog
(4)再次檢查發現使用率正常:
SQL> select * from v$flash_recovery_area_usage;
(5)重啟Oracle(注意在archive log模式下不能正常startup情況下)
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database noarchivelog;
SQL> alter database open;
SQL> shutdown immediate;
SQL> startup mount;
SQL> show parameter log_archive_dest;
SQL> alter database archivelog; //恢複成archive log模式
SQL> archive log list;
SQL> shutdown immediate;
SQL> startup;
SPFILE 錯誤導致資料庫無法啟動(ORA-01565)
ORA-01172、ORA-01151錯誤處理
ORA-00600 [2662]錯誤解決
ORA-01078 和 LRM-00109 報錯解決方案
ORA-00471 處理方法筆記