出现ORA-16038 ORA-19809 ORA-00312 Oracle 10g默认的归档日志存放在flash_recovery_area,而默认安装的时候该区间选择了2G大小当归档日志超过2G的时候,空间不足,于是无法归档,当时手工删除归档日志文件,Oracle是无法识别空间是否释放, 导致数据库无法启动 .
解决办法:
1、mount数据库
sql> startup mount (注意,这时候还会报错,但是可以更改系统参数)
2、 更改系统参数
sql> alter system set db_recovery_file_dest_size=2g scope=spfile;
参数db_recovery_file_dest_size的值根据磁盘剩余空间大小和实际需要来设置,没有定论
3、打开数据库
sql> alter database open 不会成功的
4、删除失效归档日志.
RMAN> connect target /
RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all;
RMAN> exit
5、重新启动数据库
sql> shutdown immediate
sql> startup
-------------另一个版本的解决方法-------------
oracle出现ORA-16038,ORA-19809,ORA-00312问题的解决方法
1:SQL> startup ORACLE 例程已经启动。
数据库装载完毕。
ORA-16038: 日志 3 序列号 46 无法归档
ORA-19809: 超出了恢复文件数的限制
ORA-00312: 联机日志 3 线程 1: 'D:ORACLEPRODUCT10.2.0ORADATAORCLREDO03.LOG'
2:SQL>
数据库已更改。
3:SQL> shutdown immediate
ORA-01109: 数据库未打开 已经卸载数据库。
ORACLE 例程已经关闭。
4:SQL> startup
ORACLE 例程已经启动。
数据库装载完毕。
数据库已经打开。
无法归档错误主要是因为数据库不正常关闭,SQL语句出错造成数据线程停止所因起。
-------------另一个版本的解决方法-------------
还有就是设置归档日志的大小,设置为10G的时候,错误可解决,报错的时候系统ALERT日志里也提示有几种参考方法如下工作日志所示:
1:监控邮件监控到ALERT日志中的错误如下:
alter system set db_recovery_file_dest_size=10G scope=both;
System altered.
6:再次查看使用率SQL> select * from v$flash_recovery_area_usage;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------ ------------------ ------------------------- ---------------
CONTROLFILE 0 0 0
ONLINELOG 0 0 0
ARCHIVELOG 0 49
BACKUPPIECE 0 0 0
IMAGECOPY 0 0 0
FLASHBACKLOG 0 0 0
6 rows selected.