遇到Oracle归档日志满导致数据库性能异常慢这个问题的时候,我没有查看告警日志,一直以为是数据库的锁阻塞影响了性能。知道查看日志才发现时归档日志已满。才导致这种问题的产生:
Errors in file /DBBK/oracle/diag/rdbms/orcl/orcl/trace/orcl_arc0_28918.trc:
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 34764800 bytes disk space from 4070572032 limit
ARC0: Error 19809 Creating archive log file to '/DBBK/oracle/flash_recovery_area/ORCL/archivelog/2015_03_11/o1_mf_1_574_%u_.arc'
Wed Mar 11 14:55:13 2015
Errors in file /DBBK/oracle/diag/rdbms/orcl/orcl/trace/orcl_arc1_28920.trc:
ORA-19815: WARNING: db_recovery_file_dest_size of 4070572032 bytes is 99.51% used, and has 20086784 remaining bytes available.
提示操作归档区的大小了,删除物理归档,通过RMAN工具清理过期归档,估计是因为归档一直在写,通过RMAN的方式也不是很顺畅。在手动删除历史的物理归档后过了一阵,SQLPLUS、RMAN等工具才能正常使用。这个时候需要做两件事重定义归档空间的大小,删除过期和无用的归档:
RMAN> delete expired archivelog;
SQL> alter system set db_recovery_file_dest_size=21474836480 scope=both;
进过这些操作后,数据库可以正常使用了
: