ITPub博客

首页 > 数据库 > Oracle > RMAN备份与ORA-19625&ORA-19502

RMAN备份与ORA-19625&ORA-19502

原创 Oracle 作者:清风艾艾 时间:2016-08-29 09:44:07 0 删除 编辑
    常州一地区负责人嚎哭,他业务全停了,说是数据库连接不上了,原因是RMAN备份引起的,具体原因分析请看下文。
    1、首先,看系统存储情况,如下图:

系统负责人说,D盘和E盘都有数据库文件,数据库备份在E盘。
   2、 查看数据库告警日志,有大量如下信息,看信息貌似数据库归档有问题了:
Sun Aug 21 11:30:31 2016
ARCH: Archival stopped, error occurred. Will continue retrying
Sun Aug 21 11:30:31 2016
Archiver process freed from errors. No longer stopped
Sun Aug 21 11:35:31 2016
Archiver process freed from errors. No longer stopped
Sun Aug 21 11:35:31 2016
ARCH: Archival stopped, error occurred. Will continue retrying
Archiver process freed from errors. No longer stopped
ARCH: Archival stopped, error occurred. Will continue retrying
    3、查看数据库的RMAN备份目录,RMAN的全备份日志里的ORA-19502告诉了我们原因,确实是E盘磁盘空间不足:
RMAN> RUN {
2> allocate channel c1 type disk;
3> allocate channel c2 type disk;
4> allocate channel c3 type disk;
5> backup filesperset 6 database format 'E:/backup/data/full_data_%d_%T_%s_%p';
6> sql 'alter system archive log current';
7> sql 'alter system archive log current';
8> sql 'alter system archive log current';
9> backup archivelog all format 'E:/backup/data/full_arch_%d_%T_%s_%p' delete input;
10> backup current controlfile format 'E:/backup/data/data/full_ctrl_%d_%T_%s_%p';
11> crosscheck backup;
12> crosscheck archivelog all;
13> delete noprompt archivelog all completed before  "sysdate-15";
14> delete noprompt expired backup;
15> delete noprompt obsolete;
16> release channel c1;
17> release channel c2;
18> release channel c3;
19> }
20> exit;
......
通道 c3: 正在启动段 1 于 15-8月 -16
RMAN-03009: backup 命令 (c1 通道上, 在 08/15/2016 17:34:03 上) 失败
ORA-19502: 文件 "E:\BACKUP\DATA\FULL_DATA_ORCL2_20160815_1136_1", 块编号 6295680 (块大小=8192) 上出现写入错误
ORA-27070: 异步读取/写入失败
OSD-04016: 异步 I/O 请求排队时出错。
O/S-Error: (OS 112) 磁盘空间不足。
通道 c1 已禁用, 将在另一个通道上运行该通道上失败的作业
RMAN-03009: backup 命令 (c2 通道上, 在 08/15/2016 17:34:03 上) 失败
ORA-19502: 文件 "E:\BACKUP\DATA\FULL_DATA_ORCL2_20160815_1135_1", 块编号 9574272 (块大小=8192) 上出现写入错误
ORA-27070: 异步读取/写入失败
OSD-04016: 异步 I/O 请求排队时出错。
O/S-Error: (OS 112) 磁盘空间不足。
通道 c2 已禁用, 将在另一个通道上运行该通道上失败的作业
释放的通道: c1
释放的通道: c2
释放的通道: c3
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: backup 命令 (c3 通道上, 在 08/15/2016 17:34:03 上) 失败
ORA-19502: 文件 "E:\BACKUP\DATA\FULL_DATA_ORCL2_20160815_1137_1", 块编号 4491392 (块大小=8192) 上出现写入错误
ORA-27070: 异步读取/写入失败
OSD-04016: 异步 I/O 请求排队时出错。
O/S-Error: (OS 112) 磁盘空间不足。
    4、结合告警日志和RMAN全备份日志,猜测数据库的归档目录也在E盘,经查看数据库的归档目录在E:\BACAKUP\ARCH下,然后发现E:\BACKUP\ARCH下有438G的归档文件,查看最近的归档备份日志:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: backup 命令 (在 08/16/2016 12:03:19 上) 失败
RMAN-06059: 没有找到预期的归档日志, 归档日志的丢失将影响可恢复性
ORA-19625: 识别文件E:\BACKUP\ARCH\ARCH_866716582_1_27892.ARC时出错
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
    由上述RMAN归档备份日志,发现有归档文件被误删除了,导致归档备份无法进行,从而导致E:\BACKUP\ARCH下有大量的归档积压,将E盘爆掉,数据库无法归档,导致数据库hang住。
    5、找到原因后,处理方法很简单,先手工删除积压的归档文件释放E盘空间,使用RMAN清理被误删除及过期的归档文件:
C:\>rman nocatalog
RMAN>connect target /
RMAN>crosscheck archivelog all;
RMAN>change archivelog all crosscheck;
RMAN>delete expired archivelog all;
    然后,使用RMAN重新启动数据库全备份,数据库服务异常问题解决。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29357786/viewspace-2124128/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
个人喜欢IT行业,目前从事数据库工作,包括Oracle、mysql、mongodb、sqlserver等数据库的维护,喜欢专研开发技术,尤其对java程序的开发感兴趣。工作经历上,在中国联通系统集成公司、中公网医疗信息技术有限公司做过数据库技术支持;目前在海量数据,负责华东区oracle、mysql、mongodb的维护工作。

注册时间:2015-01-30

  • 博文量
    179
  • 访问量
    214795