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;