Oracle 数据库打开时出现ORA-16038



Oracle 10g默认启用日志归档,db_recovery_file默认为2GB,不清理日志一般经过一段时间的使用闪回区便被占满,造成数据库无法归档,无法启动的错误。一般ORA-16038、ORA-19809、ORA-00312这三个错误会同时出现。

解决方法通常包括:

1. 提高参数db_recovery_file_dest_size



2. 关闭闪回功能(如果你确实不再需要该功能)



使用sqlplus /nolog登录,connect /as sysdba;
  • SQL> alter system archive log stop;
  • 3. 删除无用的归档文件并更新rman记录

    查看对应initxxx.ora,找不到的话可以在$ORACLE_HOME下搜索,找对应SID的即可
  • 在initxxx.ora中找到# File Configuration部分,可以看到db_recovery_file_dest=XXXXX,即为数据闪回区的日志文件记录位置。
  • 进入闪回区目录,查看对应SID下的archivelog文件夹内内容,删除旧的日志归档文件
  • 使用RMAN命令,RMAN> connect target /
  • 使用命令RMAN> crosscheck archivelog all,该操作将标明哪些归档文件已被删除
  • 使用命令RMAN> delete expired archivelog all,该命令将删除rman controlfile中相应的记录