ORA-01089 ORA-19809 ORA-19815
问题描述
执行rman归档日志检查失败:ORA-01089
RMAN> crosscheck archivelog all;
RMAN-00601> fatal error in recovery manager
RMAN-03004> 执行命令期间出现严重错误
ORA-01089: immediate shutdown or close in progress - no operations are permitted
问题分析
# 查看错误日志详情
$ oerr ora 1089
01089, 00000, "immediate shutdown or close in progress - no operations are permitted"
// *Cause: The SHUTDOWN IMMEDIATE command was used to shut down
// a running Oracle instance, or CLOSE IMMEDIATE was used to shut down
// a pluggable database, so your operations have been
// terminated.
// *Action: Wait for the instance to be restarted, or contact your DBA.
# 检查数据库错误日志,有如下错误:
$ oerr ora 19809
19809, 00000, "limit exceeded for recovery files"
//*Cause: The limit for recovery files specified by the
// DB_RECOVERY_FILE_DEST_SIZE was exceeded.
// *Action: There are five possible solutions:
// 1) Take frequent backup of recovery area using RMAN.
// 2) Consider changing RMAN retention policy.
// 3) Consider changing RMAN archived log deletion policy.
// 4) Add disk space and increase DB_RECOVERY_FILE_DEST_SIZE.
// 5) Delete files from recovery area using RMAN.
$ oerr ora 19815
19815, 00000, "WARNING: %s of %s bytes is %s%% used, and has %s remaining bytes available."
// *Cause: DB_RECOVERY_FILE_DEST is running out of disk space.
// *Action: One of the following:
// 1. Add disk space and increase DB_RECOVERY_FILE_DEST_SIZE.
// 2. Backup files to tertiary device using RMAN.
// 3. Consider changing RMAN retention policy.
// 4. Consider changing RMAN archived log deletion policy.
// 5. Delete files from recovery area using RMAN.
解决办法
一般出现此情况时,数据库实例可能已无法处于正常打开状态,即open模式,此时需要在mount模式下进行处理:
# 启动数据库到mount状态
$ sqlplus / as sysdba
$ startup mount;
# 检查快速恢复区大小,可以考虑手工增加:db_recovert_file_dest_size
$ show parameter recovery
# 检查rman配置
$ rman target /
# 检查配置参数
RMAN> show all;
# 修改冗余保留策略:如果保留冗余过多,可以适当调低如下参数:
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
# 设置归档日志别发保留策略
RMAN> configure archivelog deletion policy to backed up 1 times to device type disk;
# 检查控制文件和实际物理文件的差别,如果手工清理过归档日志,可能存在不一致的情况;
RMAN> crosscheck archivelog all;
# 执行delete,同步控制文件的信息和实际物理文件的信息:
RMAN> delete noprompt obsolete device type disk;
RMAN> delete noprompt expired backup device type disk;
# 尝试备份数据库,以下方式将数据库备份到默认的快速恢复区,如果备份文件过大,可能导致备份失败,报错:ORA-19809
RMAN> backup database;
# 尝试备份数据库到其他目录:
RMAN> backup database format '/data/backup/db_%d_%T_%U.bak';
# 此时,一般已可以正常打开数据库:
RMAN> alter database open;