RMAN备份时遇到ORA-48132 &ORA-48170且备份变慢案例
现象描述:
环境:
操作系统:Red Hat Enterprise Linux release 8.10
数据库版本: Oracle 19.24.0.0.0 企业版
备份作业在执行RMAN备份时,告警日志中会出现ORA-48132 & ORA-48170错误,如下所示(数据库实例用xxx做了混淆)
2025-02-12T11:10:11.070519+08:00
Errors in file /xxxdb/diag/rdbms/xxx/xxx/trace/xxx_ora_3430285.trc:
ORA-48132: requested file lock is busy, [HM_RUN] [/xxxdb/diag/rdbms/xxx/xxx/lck/AM_1618_3044626670.lck]
ORA-48170: unable to lock file - already in use
Linux-x86_64 Error: 11: Resource temporarily unavailable
Additional information: 8
Additional information: 2421413
2025-02-12T11:11:50.186760+08:00
Errors in file /xxxdb/diag/rdbms/xxx/xxx/trace/xxx_ora_3430287.trc:
ORA-48132: requested file lock is busy, [HM_RUN] [/xxxdb/diag/rdbms/xxx/xxx/lck/AM_1618_3044626670.lck]
ORA-48170: unable to lock file - already in use
Linux-x86_64 Error: 11: Resource temporarily unavailable
Additional information: 8
Additional information: 2421413
原因分析:
备份作业之前是完全正常的,而且没有做过配置与参数的变更,突然间出现了这样的报错。研究了报错的trc文件后确定是RMAN备份时抛出的错误,另外,在分析研究过程中,我们发现如果备份的时候能够重现这个错误的话,就可以观察到有ADR file lock。如果错过了备份时间段,也可以通过AWR或ASH发现,如下截图所示:

另外,我还发现一个很奇怪的问题,如下截图所示,最开始遇到这个问题的时间是是2025-02-02,在出现这个问题后,发现备份时间从15分钟多变成了50多分钟,而且每秒写出IO(OUTPUT_BYTES_PER_SEC_DISPLAY)也变小了,也就是说RMAN备份变慢了,如下所示:
CON_ID START_TIME END_TIME BACKUP_TYP IN_GB IO_IN_RATE OUT_GB IO_OUT_RAT ELAPSED_MIN OUTPUT_D
------ ------------------- ------------------- ---------- ------- ---------- ------- ---------- ----------- --------
1 2025-01-29 18:30:07 2025-01-29 18:45:54 DB FULL 588.6 636.47M 144.4 156.18M 15.8 DISK
1 2025-01-30 18:30:07 2025-01-30 18:46:02 DB FULL 587.8 630.25M 143.8 154.17M 15.9 DISK
1 2025-01-31 18:30:07 2025-01-31 18:45:54 DB FULL 587.8 635.63M 143.7 155.43M 15.8 DISK
1 2025-02-01 18:30:07 2025-02-01 18:46:00 DB FULL 587.4 631.12M 142.9 153.52M 15.9 DISK
1 2025-02-02 18:30:06 2025-02-02 19:21:39 DB FULL 582.1 192.73M 137.4 45.49M 51.6 DISK
1 2025-02-03 18:30:07 2025-02-03 19:21:39 DB FULL 582.3 192.84M 137.4 45.51M 51.5 DISK
1 2025-02-04 18:30:07 2025-02-04 19:21:39 DB FULL 582.2 192.80M 137.4 45.50M 51.5 DISK
1 2025-02-05 18:30:07 2025-02-05 19:21:39 DB FULL 588.0 194.74M 140.7 46.59M 51.5 DISK
1 2025-02-06 18:30:06 2025-02-06 19:21:38 DB FULL 586.4 194.22M 140.5 46.54M 51.5 DISK
1 2025-02-07 18:30:07 2025-02-07 19:21:38 DB FULL 582.6 193.00M 136.7 45.30M 51.5 DISK
1 2025-02-08 18:30:07 2025-02-08 19:21:39 DB FULL 583.4 193.21M 136.9 45.34M 51.5 DISK
1 2025-02-09 18:30:07 2025-02-09 19:21:40 DB FULL 583.6 193.21M 137.3 45.45M 51.6 DISK
1 2025-02-10 18:30:06 2025-02-10 19:21:40 DB FULL 583.7 193.17M 137.1 45.39M 51.6 DISK
1 2025-02-11 18:30:07 2025-02-11 19:21:38 DB FULL 584.4 193.62M 137.2 45.46M 51.5 DISK
1 2025-02-12 10:36:50 2025-02-12 11:20:23 DB FULL 590.2 231.30M 142.9 56.00M 43.6 DISK
1 2025-02-12 11:21:35 2025-02-12 11:35:55 DB FULL 550.4 655.32M 103.1 122.71M 14.3 DISK
16 rows selected

解决这个问题是在2025-02-12日10点多,临时解决后RMAN备份速度又恢复正常了。我搜索了Oracle官方文档,关于这个错误,其实官方文档Oracle Support上有详细文档ORA-48132 ORA-48170 When Running RMAN Backups (Doc ID 2904353.1)介绍,我们这边遇到的案例跟链接内容极其相似(但是还有点不同),这里就不画蛇添足了,贴上具体内容如下所示
APPLIES TO:
Oracle Database - Enterprise Edition - Version 11.2.0.4 and later
Information in this document applies to any platform.
SYMPTOMS
Alert log flooded with below errors while running the RMAN backup.
ADR or AMH operation error:; err_code=48132, "dbkh_create_pseudo_run_ctx-1"=dbkh_create_pseudo_run_ctx-1
at 0xffffffff7fff5870 placed krbb.c@25071
ORA-48132: requested file lock is busy, [HM_RUN] [/db01/app/oracle/diag/rdbms/<DB_NAME>/<SID>/lck/AM_1618_3044626670.lck]
ORA-48170: unable to lock file - already in use
SVR4 Error: 11: Resource temporarily unavailable
Additional information: 8
Additional information: 2701
'ADR file lock' wait event observed during the backup.
INST_ID SID CH SEQ# EVENT STATE SECS
---------- ------- --------------------------- ------ ---------------------------- ---------- ----------
1 262 6114 SQL*Net message from client WAITING 50
1 467 rman channel=ORA_SBT_TAPE_1 898 ADR file lock WAITING 2 >>>>>>>>>>>>>>>>>>>>>>>>>
CHANGES
CAUSE
This symptom is being investigated by developer in Bug 10125939.
Bug 10125939 - GSFBDRA: RMAN VALIDATE HANG WAITING FOR 'ADR FILE LOCK' Closed as could not reproduce
SOLUTION
Choose the following workaround:
Solution 1:
Disable HM Monitor as below:
alter system set "_diag_hm_rc_enabled"=false scope=both;
Solution 2:
Enable krb trace , this might lead to more RMAN KRB traces to generate.
If RAC, Krb tracing needs to enabled on all nodes.
alter system set event='logon trace name krb_options level 20' scope=spfile; <==== To set it.
alter system set event='logon trace name krb_options off' scope=spfile; <==== To set it off
Solution 3:
Rename/Move lck folder.
ex: /db01/app/<BASE>/diag/rdbms/<sid>/<SID>/lck/AM_1618_3044626670.lck
Shutdown database;
cd /db01/app/<BASE>/diag/rdbms/<sid>/<SID>
mv lck lck_bkp
start the database
purge adrci
adrci>purge
这里我们通过删除lck文件了暂时解决了RMAN备份时告警日志报ORA-48132&ORA-48170错误。在Oracle Service Requests提交SR反馈给官方后,Oracle技术人员也确认是遇到了bug,不过他们反馈遇到的是Bug 35500265 - Slow backups with errors ORA-48132 ORA-48170 ( Doc ID 35500265.8 )导致。而不是上文中的Bug 10125939,官方结论如下:
-- Conclusion:
The following bug might be hit:
Bug 35500265 - Slow backups with errors ORA-48132 ORA-48170 ( Doc ID 35500265.8 )
-- Evidence:
1. The symptom that RMAN backup slow with ORA-48132 and ORA-48170 is similar.
2. 19.24 is in the scope of 35500265's effected version.
3. The patch of 35500265 is not applied in this system
关于Bug 35500265,这个Bug已将在19.25.0.0.241015中fix掉了。如果要彻底解决这个问题就必须安装相关补丁。

参考资料:
ORA-48132: Requested File Lock Is Busy, [HM_RUN] (Doc ID 3066412.1)
ORA-48132 ORA-48170 When Running RMAN Backups (Doc ID 2904353.1)
RMAN备份时遇到ORA-48132 &ORA-48170且备份变慢案例的更多相关文章
- mysqldump进行数据库的全备时,备份数据库的顺序是什么,就是先备份哪个库,然后再备份哪个库
需求描述: 今天在用mysqldump工具进行数据库的备份的时候,突然想了一个问题,比如我有10个库要进行备份 那么是先备份哪个,然后再备份哪个呢,所以,做了实验,验证下. 操作过程: 1.使用--a ...
- Percona Xtrabackup备份mysql全库及指定数据库(完整备份与增量备份)
原文地址:http://www.tuicool.com/articles/RZRnq2 Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对In ...
- Percona备份mysql全库及指定数据库(完整备份与增量备份)
Percona Xtrabackup备份mysql全库及指定数据库(完整备份与增量备份) Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对I ...
- oracle的listener.ora sqlnet.ora tnsnames.ora三个文件的关联性
学习:http://www.cnblogs.com/william-lee/archive/2010/10/20/1856261.html 之前因为安装的是windows server 2008 r2 ...
- ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)
不论是单实例还是RAC,对于非缺省端口下(1521)的监听器,pmon进程不会将service/instance注册到监听器,即不会实现动态注册.与单实例相同,RAC非缺省端口的监听器也是通过设置参数 ...
- listener.ora/sqlnet.ora/tnsnames.ora配置文件详解
oracle网络配置 三个配置文件 listener.ora.sqlnet.ora.tnsnames.ora ,都是放在$ORACLE_HOME/network/admin目录下. 英文说明: The ...
- mysql完整备份时过滤掉某些库
mysql进行完整备份时使用--all-database参数比如:#mysqldump -u root -h localhost -p --all-database > /root/all.sq ...
- mysql 恢复备份时出错 Unknown command ‘\”
今天恢复mysql备份时,出现了Unknown command ‘\”这样的错误,原以为是备份文件出错,重新备份导入时还是出错.研究了一凡是因为编码的问题,解决方案如下: 使用你导出备份时的编码重新导 ...
- 关于GTID模式下备份时 --set-gtid-purged=OFF 参数的实验【转】
刚刚听了吴老师是复制章节课程,对于GTID模式下备份数据--set-gtid-purged=OFF 参数有些不理解,于是乎做了实验,加深理解,得出些结论,如有错漏请批评指正! 部分备份: [root@ ...
- mysqldump备份时保持数据一致性
对MySQL数据进行备份,常见的方式如以下三种,可能有很多人对备份时数据一致性并不清楚 1.直接拷贝整个数据目录下的所有文件到新的机器.优点是简单.快速,只需要拷贝:缺点也很明显,在整个备份过程中新机 ...
随机推荐
- 使用conditional 实现线程精准通讯
实现3个线程之间依次执行 比如有3个线程A,B,C ,需要按照顺序执行,ABC,ABC 依次执行. 这个使用可以使用 Lock 的 conditional来实现线程之间精准通讯. 点击查看代码 pac ...
- 基于 .NET 开发的多功能流媒体管理控制平台
前言 今天大姚给大家分享一个基于 .NET 开发且开源(MIT License)的多功能流媒体管理控制平台:AKStream. 项目介绍 AKStream是一个基于.NET开发且开源(MIT Lice ...
- Java框架 —— Spring
Spring 简介 一般来说,Spring指的是SpringFramework,它提供了很多功能,例如:控制反转(IOC).依赖注入 (DI).切面编程(AOP).事务管理(TX) 主要 jar ...
- LLM应用实战-财经新闻自动聚合
1. 背景 这段时间项目比较忙,所以本qiang~有些耽误了学习,不过也算是百忙之中,抽取时间来支撑一个读者的需求,即爬取一些财经网站的新闻并自动聚合. 该读者看了之前的<AI资讯的自动聚合及报 ...
- 中电金信:向“新”而行—探索AI在保险领域的创新应用
大模型的应用已经渗透到各个领域,并展现出惊人的潜力.在自然语言处理方面,大模型用于机器翻译.文本摘要.问答系统等:在计算机视觉领域,应用于图像识别.目标检测.视频分析等:此外,大模型也应用于语音识别. ...
- Java线程 interrupt 方法使用异常
背景 需要在异步任务中中断任务的执行,故选择通过调用 interrupt 方法对线程设置中断信号. 在比较耗时的业务代码增加判断 Thread.currentThread().isInterrupte ...
- 【数据库】【MySQL】创建数据库、数据表、修改数据表字段的一些基本操作
这是一份作业,仅此而已. 代码仅供参考. # 创建数据库yggl_mllt9920 CREATE DATABASE yggl_mllt9920; # 选择数据库 USE yggl_mllt9920; ...
- 部署SkyWalking
SkyWalking部署说明 二进制包部署 1.下载地址 https://dlcdn.apache.org/skywalking/9.4.0/apache-skywalking-apm-9.4.0.t ...
- 关于Java的UUID
UUID或者UNID或者UID,是一个统一唯一标识,可以用来标记文档.数据或其它需要唯一标识的东西.Java 5.0内置UUID的实现,见java.util.UUID. 下面代码是找到的2种实现方式, ...
- Qt/C++音视频开发78-获取本地摄像头支持的分辨率/帧率/格式等信息/mjpeg/yuyv/h264
一.前言 上一篇文章讲到用ffmpeg命令方式执行打印到日志输出,可以拿到本地摄像头设备信息,顺藤摸瓜,发现可以通过执行 ffmpeg -f dshow -list_options true -i v ...