oracle 无法打开归档日志文件,oralce日志文件无法归档错误ORA-16038解决方法

最近使用oracle时突然发现如下错误

ORA-16038: 日志 2 序列号 67 无法归档

ORA-19809: 超出了恢复文件数的限制

ORA-00312: 联机日志 2 线程 1:

'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'

导致oracle无法启动,上网查了下原因,发现

select r.SPACE_USED/r.SPACE_LIMIT from v$recovery_file_dest r;

恢复文件空间不够了,网上提供的解决方法:

1.将归档设置到其他目录,修改alter System set log_archive_dest;

2.转移或者删除闪回恢复区里的归档日志;

3.增大闪回恢复区,alter System set db_recovery_file_dest_size=5G;

4.手动将未归档的Redo日志进行归档。执行以下命令手动将未归档的Redo日志进行归档

alter system archive log all to '/archive1'

to参数指定的位置可以是之前的归档位置,也可以是其他位置,oracle操作系统用户在这个位置有读写的权限。执行完这个命令之后所有未归档的日志都被归档,之后很顺利就执行了alter database open命令打开了数据库。

我选择使用第二方法来解决我的oracle问题。

首先使用删除闪回恢复区里的归档日志,以便让oracle尽快正常工作,

SQL> startup force

ORACLE 例程已经启动。

Total System Global Area  612368384 bytes

Fixed Size                  1250428 bytes

Variable Size             117443460 bytes

Database Buffers          486539264 bytes

Redo Buffers                7135232 bytes

数据库装载完毕。

ORA-16038: 日志 3 序列号 1807 无法归档

ORA-19809: 超出了恢复文件数的限制

ORA-00312: 联机日志 3 线程 1: 'E:\ORADATA\MDC\REDO03.LOG'

查看v$log

SQL> select group#,sequence#,archived,status from v$log;

GROUP#  SEQUENCE# ARCHIV STATUS

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

1       1808 NO     INACTIVE

2       1807 NO     INACTIVE

3       1809 NO     CURRENT

看到组2是非当前状态,并且没有归档,使用参考文章中的处理非归档文件的方法.

SQL> alter database clear unarchived logfile group 2;

数据库已更改。

启动数据库,这个启动成功.

SQL> alter database open;

数据库已更改。

为了防止归档日志再次占满空间,需要定期清理归档日志。

在rman下执行crosscheck archivelog all;检查所有的归档日志

delete noprompt archivelog all backed up 1 times to device type disk;将已经备份过一次的归档日志全部清除。

可以在备份脚本的最后加上这几行代码,对归档日志进行清理,以彻底解决这个问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值