查看原文
其他

关系型数据库Oracle之RMAN备份ORA-19625等错误解决办法

JiekeXu JiekeXu DBA之路 2024-03-03

事情是这样的,上周六中午刚要出去吃饭,便看到微信群里备份工程师的微信消息,说某套环境备份失败,让 DBA 检查下环境,我猜想这不是什么大问题,便不慌不忙的登陆到服务器上,打开备份的日志查看,果然不是什么大问题,之前也出现过类似的问题。结果日志中出现很明显、很关键的几个错误,如:RMAN-03002 、RMAN-06059、ORA-19625、ORA-17053、ORA-15012,日志报错如下截图:



那么,我们来一起扯扯事情发生的经过吧。


起因:


看到这报错,很简单对吧,找不到归档日志,便报错了,基本上没什么可说的,但对于初学者而言,还是记录以下,以便后来者参考。先说说这个错误怎么来的吧,事情的经过是这样的(回忆片段走起),上周四晚上回家途中,马上要下地铁了,手机微信里出现了一大片关于数据库的告警,数一数有 7 套数据库同时告警,感觉出大事了,后来说是存储那边出问题了,经过一天的修复,只剩下一台机器有问题了,操作系统无法启动,也修复不了,幸好修复不了的机器只是我们数据库的一个节点,可这就造成了我们其中的一台数据库由RAC 变成单点了。

 

经过:


数据库由 RAC 变成单机的了,总不能一直单机跑着啊,于是,上周五晚上便开始停业务起变更,对数据库进行添加节点的操作,方案是这么定下来了,可是明天和意外永远不知道那个先来,停完业务,数据库这边准备的差不多了,可是虚拟化存储那边的工程师可让人无语。五六个小时了虚拟机分不出来,各种问题,等到凌晨两点了,也没搞定。最后,人家领导决定不这么干了,等到周六晚上重建,这就意味着我们数据库需要新搭建一套环境,然后将之前的数据做全备进行恢复,幸好也是数据量不大,之前也出现过这样的案例。那就这么定了,上周六晚上,开始新建环境恢复数据。我们这帮人也就消停了,各回各家撤人了,于是乎,也体验了一把 凌晨三点的北京,还特意发了一下朋友圈!

 

结果:


上周六晚上,虚拟化、操作系统、数据库岗一起协作,经过大半夜的努力,大概凌晨四点多,也没出现什么问题,看到我们同事群里说数据库恢复好了,业务可以验证功能了,也就算重建、恢复完成了。数据库正常使用了,备份工程师需要部署备份,那么,执行备份时就出现了开篇中的问题。



问题解决:


由于是新装的机器,旧的备份和归档日志没有复制过来,控制文件里面还有这些归档日志文件信息, RMAN 备份时会去备份这些归档日志,而这些旧的归档日志又不存在了,所以就会出现这个错误。这才是重点,既然知道了这个问题,就先解决了在说吧。两条命令搞定,如下:

 

rman target /crosscheck archivelog all;delete expired archivelogall;

 

crosscheck archivelog all; 检查控制文件和实际物理文件的差别,如果一些归档日志已经删除或丢失,那么设置它们为expired。

delete expired archivelog all; 同步控制文件的信息和实际物理文件的信息(it will delete expired archivelog and updates your controlfile)。

 

问题解决了,说一下如上问题出现的其他可能性,手工删除归档日志或移动了归档日志也会出现如上的错误,需要手工执行 crosscheck 过程后,RMAN备份才能正常进行。

 

有时候,Oracle  自带的原生态命令也可以帮助我们查看问题,我记得以前面试的时候,居然没有回答上来这个命令的使用,这里大概记录一下,oerr 命令是 $ORACLE_HOME/bin 下自带原生态命令,故需要在 OS 层面下的 oracle 用户执行,例如:oerr ora 600 等。

 

[oracle@JiekeXu~]$ oerr ora 60000600,00000, "internal error code, arguments: [%s], [%s], [%s], [%s], [%s],[%s], [%s], [%s], [%s], [%s], [%s], [%s]"//*Cause: This is the generic internal error number for Oracle program// exceptions. It indicates that aprocess has encountered a low-level,// unexpected condition. The firstargument is the internal message// number. This argument and the databaseversion number are critical in// identifying the root cause and thepotential impact to your system.////*Action: Visit My Oracle Support to access the ORA-00600 Lookup tool// (reference Note 600.1) for moreinformation regarding the specific// ORA-00600 error encountered.//// An Incident has been created for thiserror in the Automatic// Diagnostic Repository (ADR). Whenlogging a service request, use// the Incident Packaging Service (IPS)from the Support Workbench// or the ADR Command Interpreter(ADRCI) to automatically package the// relevant trace information (reference MyOracle Support Note 411.1).//// The following information should alsobe gathered to help determine// the root cause:// - changes leading up to the error// - events or unusual circumstancesleading up to the error// - operations attempted prior tothe error// - conditions of the operatingsystem and databases at the time// of the error//// Note: The cause of this message maymanifest itself as different// errors at different times. Be awareof the history of errors that// occurred before this internal error.

 


通过 OS 层面也能查个七七八八,基本的 ora 和 rman 错误均可查看,用好了也是一把利器,让我们一起学习一下吧,出现问题时先通过 OS 的提示看看也很方便。

 

好了,今天就说这么多吧,对于上文中的  RAC 是怎么重建怎么恢复的,以后有时间再说,最重要的一点就是做好备份,不管冷备,热备,至少有一个,保障数据不丢失就行。


往期精彩回顾

北京邮电大学生在校园测试 5G 网络的视频火了!

(建议收藏)关于微信读书福利的那点事儿

推荐一个好用的PDF阅读器—悦书阅读器

能进互联网公司的个个都是人才

免费分享一款看剧神器 APP

关于个人对培训的看法

长按添加微信公众号,更多精彩内容不错过!


码字不易,点赞、转发是一种对作者的鼓励! 

继续滑动看下一个

关系型数据库Oracle之RMAN备份ORA-19625等错误解决办法

JiekeXu JiekeXu DBA之路
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存