2009年4月15日星期三

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

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

解决方法通常包括:

1. 提高参数db_recovery_file_dest_size

  • 使用sqlplus /nolog登录,SQL> connect /as sysdba;

  • SQL> startup mount;
  • SQL> ALTER SYSTEM SET
    DB_RECOVERY_FILE_DEST_SIZE=4G SCOPE=BOTH;

  • SQL> alter database open;

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中相应的记录

0 评论:

发表评论