ORA-16038

ORA-16038: log 2 sequence# 786 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 2 thread 1:'F:\ORACLE\PRODUCT\10.1.0\ORADATA\KOKOOA\REDO02.LOG'

我估计是flash_recovery_area的问题。查看F:\oracle\product\10.1.0\admin\kokooa\bdump下的alert_kokooa.log最后几段。发现有:

ORA-19815: WARNING: db_recovery_file_dest_size of 4294967296 bytes is 100.00% used, and has 0 remaining bytes available.

然后查询:
select substr(name,1,30) as name,space_limit as quota,space_used as used,space_reclaimable as re,number_of_files as files from v$recovery_file_dest;

NAME                                                        QUOTA        USED         RE      FILES

---------------------------------------                 ---------- ---------- ---------- ----------

F:\oracle\product\10.1.0\flash           4294967296  4291342848          0        485

发现flash_recovery_area占满了。手动删除了F:\oracle\product\10.1.0\flash_recovery_area\KOKOOA下的一些不需要的文件。发现没有效果。

重启,还是一样的问题。最后,进行如下的操作:
SQL> select group#,sequence#,archived,status from v$log;

     GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
          1        788        NO INVALIDATED
           2        786        NO INACTIVE
           3        787        NO INACTIVE

总结: 日志文件组的状态 
current: 当前正在使用的工作组 
inactive: 非活动组 
active : 归档还没有完成 
unused : 还没有使用,一般新建的工组组都是这个状态 
SQL> alter database clear unarchived logfile group 2; ------手工清除了归档日志

视图使用 clear unarchived logfile,使用UNARCHIVED会在重做日志不再需要归档的情况下可以定义UNARCHIVED。 
       Database altered.
    SQL> alter database open;
       Database altered.
    SQL> shutdown immediate
       Database closed.
       Database dismounted.
       ORACLE instance shut down.
    SQL> startup
       ORACLE instance started.
       Total System Global Area 603979776 bytes
       Fixed Size                  1220796 bytes
       Variable Size             184553284 bytes
       Database Buffers          411041792 bytes
       Redo Buffers                7163904 bytes
       Database mounted.
       Database opened.
       就OK了。

仔细查找原因:

ORA-19809: limit exceeded for recovery files 
Cause: The limit for recovery files specified by the DB_RECOVERY_FILE_DEST_SIZE was exceeded. 
Action: The error is accompanied by 19804. See message 19804 for further details.

解决方法: 
方法1、 
1)将归档设置到其他目录 
修改alter system set log_archive_dest = 其他路径 
2)转移或者删除闪回恢复区里的归档日志。 
方法2、也可以使用增大闪回恢复区的方法来解决 
SQL> show parameter db_recovery_file_dest_size 
NAME TYPE VALUE 
------------------------------------ ----------- ------------------- 
db_recovery_file_dest_size big integer 2G 

  问题并没有解决,今早又遇到此问题:

最后还是增大了闪回恢复区解决问题。无奈...

看看闪回恢复区的文件结构层次

tree F:\oracle\product\10.1.0\flash_recovery_area;
文件夹 PATH 列表
卷序列号码为 00790072 1B4C:1BF0
F:\ORACLE\PRODUCT\10.1.0\FLASH_RECOVERY_AREA
└─KOKOOA
       └─ARCHIVELOG
        ├─2009_10_19
        ├─2009_10_20
        ├─2009_10_21
        ├─2009_10_22
        ├─2009_10_23

          
 清除日志文件 

RMAN> crosscheck archivelog all;//检查所有的归档日志,如果不在介质上标记为过期!
RMAN> delete expired archivelog all;//删除所有过期的归档日志
原因分析,我只是手工清除了归档日志,所以必须在RMAN里,通过这样的方式进行清除,才能恢复我的闪回空间大小!

alter database clear unarchived logfile; 清空日志
其中可以用alter system switch logfile; 来切换日志

终于最终解决了,需要到RMAN下删除才行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值