【翻譯自mos文章】ORA-19815, Flashback Logs-Space management,
ORA-19815, Flashback Logs-Space management (文檔 ID 369755.1)
適用於:
Oracle Database - Enterprise Edition - Version 10.1.0.2 to 11.2.0.3 [Release 10.1 to 11.2]
Information in this document applies to any platform.
***Checked for relevance on 08-Jan-2014***
目標:
recovery file dest被flashback log 撐爆了,在alert日誌中報ora-19815錯誤,需要remove or reuse 掉flashback log(FBL)
解決方案:
flashback logs 是被oracle 內部處理的,dba不能控制flashback logs。這意味著dba不能手工delete flashback logs,唯一的方法是disable掉 flashback
The FlashBack Logs can ONLY be deleted by DISABLING FLASHBACK on database level
SQL> startup mount
alter database flashback off;
alter database open;
當遇到空間壓力時,flashback log 基於如下2種情況被deleted
1)當一個歸檔日誌被deleted時,oracle 會delete 掉 被歸檔日誌所依賴的flashback logs
2)當quota被收縮時,flashback log 被deleted以回收disk space
減小DB_RECOVERY_FILE_DEST_SIZE參數值到一個特定值,以便讓flashback log 遇到space pressure,老的flashback log 將會被deleted
我們可能遇見下面的bug:即使遇到fra區中的空間壓力,flashback log 也不會被deleted。
Bug 5106952 FLASHBACK LOG SPACE NOT BEING RECLAIMED
Fixed In Ver: 11.0
Also the bug is fixed in patch set 10.1.0.6 and 10.2.0.3 .
雖然Bug 5106952 在11g中被fix了,這個過程依然可以被用來delete flashback log
1.- First of all we need to check if there is any guaranteed restore point defined: SQL> select name,scn,time,database_incarnation#,guarantee_flashback_database,storage_size from v$restore_point; 2.- Remove all the restore points SQL> Drop restore point <name>; 3.- Check how much space is used before turning off Flashback SQL> select * from v$flash_recovery_area_usage; 4.- SQL> ALTER DATABASE FLASHBACK OFF; 5.- Now you can delete the Flashback logs manually 6.- SQL> ALTER DATABASE FLASHBACK ON; 7.- Check that there are no flashback logs before turning back on SQL> select * from v$flash_recovery_area_usage;