打对了

实践Oracle优化技术在医疗信息化中的深入应用,探索医院信息系统性能优化设计之道。公众号:医信系统性能优化。

 

归档日志充满的问题解决

在配置流复制环境时,将数据库配置为归档模式后,在执行流配置时卡住了,查日志文件发现是日志文件无法归档,于是手工强制归档,出现了如下错误:

SQL> archive log next

ORA-16014: 日志 3 的序列号 127 未归档, 没有可用的目的地

ORA-00312: 联机日志3线程1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO03.LOG'

于时检查归档文件的参数log_archive_destdb_recovery_file_dest,没有发现问题,又检查了文件夹的NTFS权限,也没有问题。又执行下面的归档命令发现:

SQL> archive log all

ORA-16020: 可用的目的地少于由 LOG_ARCHIVE_MIN_SUCCEED_DEST 指定的数量

       到后来,数据库重启后根本打不开了,只能启动到Mout状态。

SQL> alter database open;

alter database open

*

1 行出现错误:

ORA-16014: 日志 3 的序列号 127 未归档, 没有可用的目的地

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

’ D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO03.LOG’

查看警告日志文件中发现的错误,怀疑是空间不够,于是修改了参数db_recovery_file_dest_size,由1G改为2G,仍然不够,改为3G后,执行归档正常了。

       感到很奇怪,归档日志所在的盘,可用空间不止3G,已用的归档日志删除后也很少,是什么原因导致Oracle认为归档所需的空间不够呢?

       分析警告日志文件发现有下面的信息:

       Errors in file g:\oracle\product\10.2.0\db_1\admin\orcl\bdump\orcl_arc1_5188.trc:

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

       看来,确实Oracle认为归档目录的空间满了,继续分析发现联机日志文件使用的是缺省尺寸50M(Oracle 10G的缺省大小),回想起有一段时间数据库是运行在归档模式的,这么大的联机日志归档,当然空间增长很快。

       于是,先重建联机日志文件,改为每个文件5M

       但是,归档日志是删除了的,占用的空间根本就没有2GOracle为什么认为空间不够呢?原来,Oracle内部还记录了这些归档文件的信息,物理文件虽然删除了,但是文件相关的信息仍然在Oracle数据库中,需要使用Rman的命令来清除这些信息。

       RMAN>connect target /

       RMAN>crosscheck archivelog all

       RMAN> delete expired archivelog all

       最后,再修改db_recovery_file_dest_size,改为1G,执行强制归档,一切正常了。

 

posted on 2007-11-01 23:02  知道得越多知道的越少  阅读(2039)  评论(1编辑  收藏  举报

导航