ORA-16014: log 3 sequence# 82 not archived, no available destinations
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/hxy/redo03.log'
这是由于Flash Recovery Area空间不足导致数据库不能打开,解决办法如下
一、改变数据状态到mount,
SQL>alter database mount
二、查看Flash Recovery Area空间的使用状态
SQL> show parameter db_recovery_file
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /db/oracle/flash_recovery_area
db_recovery_file_dest_size big integer 2G
当我们将数据库的模式修改为归档模式的时候,如果没有指定归档目录,默认的归档文件就会放到Flash Recovery Area的目录,但是这个目录是有大小限制的,如果超过了这个大小,就会导致2个问题,一是不能完成归档,二是,在出现问题后,如果此时重启数据库,那么数据库就无法正常启动。
三、这个问题有3个解决办法,(1)扩大Flash Recovery Area的容量(2)删除不用的归档日志文件(3)指定归档日志文件到其他目录
(1)扩大Flash Recovery Area容量治标不治本
SQL> alter system set db_recovery_file_dest_size=3G scope=both; #增加容量
SQL> show parameter db_recovery_file
#查看是否增加
SQL> select * from v$flash_recovery_area_usage #检查
Flash Recovery Area使用状况
计算flash recovery area已经占用的空间:
SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;(3)删除不用的归档日志文件
先到/db/oracle/flash_recovery_area目录下删除不用的归档文件
但是还要到数据库里删除一下,要不然数据库不认,再启动会报下面的错误
ORA-16038: log 3 sequence# 82 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/hxy/redo03.log'
进入RMAN
rman
RMAN> connect target /
RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all;
或者 RMAN>delete obsolete;
RMAN>crosscheck backupset;
RMAN> delete expired backupset;
RMAN>exit
然后再次启动数据库,问题解决
(3)指定归档日志文件到其他目录
推荐使用这个办法 alter system set log_archive_dest_1='location=/db/oracle/oradata/archive_log'