您的位置:首页 > 其它

ORA-03113: end-of-file on communication channel (通信通道的文件结尾)

2014-01-07 21:50 495 查看
今天有现场反应:数据库连不上了,提示什么归档日志有问题;又问了现场有做过什么特别操作,答曰没有,出问题后,只是重启了操作系统。

现场环境oracle11.0.2.3。

于是远程查看数据库状态,发现数据库实例没有打开,startup后,提示ORA-03113问题,启动失败。

于是查看后台alert日志,日志提示:

Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\urpdb\urpdb\trace\urpdb_arc1_3392.trc:
ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 4322230272 字节) 已使用 100.00%, 尚有 0 字节可用。
************************************************************************
You have following choices to free up space from recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating
system command was used to delete files, then use RMAN CROSSCHECK and
DELETE EXPIRED commands.
************************************************************************

情况很明了了。db_recovery_file_dest_size参数默认4G的容量满了,日志也给你提示解决办法:

办法1:扩大db_recovery_file_dest_size 容量,问题即可解决。

但总感觉这样只治标不治本。

办法2:通过RMAN CROSSCHECK and DELETE EXPIRED 命令,把过期的、废弃的日志删除。问题也即可解决。

但总感觉还是只治标不治本。

虽然以上2个办法,都可以解决问题,但终归不是长久之计;时间一长,日志空间还是会满,难道每次都要手工操作?

有没有这样一个方案:系统自动定期用rman把归档日志归档,每超过7天,把之前的归档日志文件删除。

思路:创建一个sh脚本,把该脚本做成系统定期任务。有待测试!

附1:rman的删除语句如下:

run {
delete noprompt obsolete;
crosscheck backup;
delete noprompt expired backup;
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog all completed before 'SYSDATE - 7';
}

附2:crontab 自动执行脚本

为了使系统定期执行备份操作,在crontab中添加如下内容:

每周日00:00进行一次全库备份操作;每天八个小时进行一次归档日志备份操作;

0 0 * * 0 sh /opt/oracle/backup/script/dbback.sh 2>&1

0 0,8,16 * * * sh /opt/oracle/backup/script/archivelogback.sh 2>&1

service cron restart
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: