出现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> alter database clear unarchived logfile 'D:ORACLEPRODUCT10.2.0ORADATAO RCLREDO03.LOG';
数据库已更改。
3:SQL> shutdown immediate
ORA-01109: 数据库未打开 已经卸载数据库。
ORACLE 例程已经关闭。
4:SQL> startup
ORACLE 例程已经启动。
数据库装载完毕。
数据库已经打开。
无法归档错误主要是因为数据库不正常关闭,SQL语句出错造成数据线程停止所因起。
-----------------另一个版本的解决方法-----------------
还有就是设置归档日志的大小,设置为10G的时候,错误可解决,报错的时候系统ALERT日志里也提示有几种参考方法如下工作日志所示:
1:监控邮件监控到ALERT日志中的错误如下:
2:查看ALERT日志详细错误如下
ORA-19815:WARNING:db_recovery_file_dest_sizeof2147483648bytesis100.00%used,andhas0remainingbytesavailable.
TueMay3114:57:42
************************************************************************
Youhavefollowingchoicestofreeupspacefromflashrecoveryarea:
1.ConsiderchangingRMANRETENTIONPOLICY.IfyouareusingDataGuard,
thenconsiderchangingRMANARCHIVELOGDELETIONPOLICY.
2.BackupfilestotertiarydevicesuchastapeusingRMAN
BACKUPRECOVERYAREAcommand.
3.Adddiskspaceandincreasedb_recovery_file_dest_sizeparameterto
reflectthenewspace.
4.DeleteunnecessaryfilesusingRMANDELETEcommand.Ifanoperating
systemcommandwasusedtodeletefiles,thenuseRMANCROSSCHECKand
DELETEEXPIREDcommands.
************************************************************************
TueMay3114:57:42
Errorsinfile/usr/app/db-server/ora_base/admin/gis/bdump/gis_arc1_3602.trc:
ORA-19809:limitexceededforrecoveryfiles
ORA-19804:cannotreclaim43570176bytesdiskspacefrom2147483648limit
ARC1:Error19809Creatingarchivelogfileto'/usr/app/db-server/ora_base/flash_recovery_area/GIS/archivelog/_05_31/o1_mf_1_44477_0_.arc'
TueMay3115:17:20
Thread1advancedtologsequence44479
Currentlog#3seq#44479mem#0:/usr/app/db-server/ora_base/oradata/gis/redo03.log
TueMay3115:17:20
Errorsinfile/usr/app/db-server/ora_base/admin/gis/bdump/gis_arc0_3600.trc:
很明显的错误信息,说明归档空间满了
3:查看归档参数
SQL>showparameterrec
NAMETYPEVALUE
-----------------------------------------------------------------------------
buffer_pool_recyclestring
control_file_record_keep_timeinteger7
db_recovery_file_deststring/usr/app/db-server/ora_base/fl
ash_recovery_area
db_recovery_file_dest_sizebiginteger2G
db_recycle_cache_sizebiginteger0
ldap_directory_accessstringNONE
recovery_parallelisminteger0
recyclebinstringon
use_indirect_data_buffersbooleanFALSE
4:查看使用率
SQL>select*fromv$flash_recovery_area_usage;
FILE_TYPEPERCENT_SPACE_USEDPERCENT_SPACE_RECLAIMABLENUMBER_OF_FILES
----------------------------------------------------------------------
CONTROLFILE000
ONLINELOG000
ARCHIVELOG99.9900
BACKUPPIECE000
IMAGECOPY000
FLASHBACKLOG000
5:变更归档大小为10G
SQL>altersystemsetdb_recovery_file_dest_size=10Gscope=both;
Systemaltered.
6:再次查看使用率
SQL>select*fromv$flash_recovery_area_usage;
FILE_TYPEPERCENT_SPACE_USEDPERCENT_SPACE_RECLAIMABLENUMBER_OF_FILES
----------------------------------------------------------------------
CONTROLFILE000
ONLINELOG000
ARCHIVELOG19.93049
BACKUPPIECE000
IMAGECOPY000
FLASHBACKLOG000
6rowsselected.