作者:Digital Observer(施嘉伟)
Oracle ACE Pro: Database
PostgreSQL ACE Partner
11年数据库行业经验,现主要从事数据库服务工作
拥有Oracle OCM、DB2 10.1 Fundamentals、MySQL 8.0 OCP、WebLogic 12c OCA、KCP、PCTP、PCSD、PGCM、OCI、PolarDB技术专家、达梦师资认证、数据安全咨询高级等认证
ITPUB认证专家、PolarDB开源社区技术顾问、HaloDB技术顾问、TiDB社区技术布道师、青学会MOP技术社区专家顾问、国内某高校企业实践指导教师
公众号/墨天轮:Digital Observer;CSDN/PGfans:施嘉伟;ITPUB:sjw1933
一、数据库卡顿
引起数据库卡顿的原因有很多,以下案例为RMAN备份时间设置不当引起的性能问题。
1. 案例背景
某生产数据库5月22日8点05左右业务出现延迟。
2. 案例细节
以下细节省去前期主机性能排查以及数据库基本定位步骤。
截取数据库性能分析报告,如图所示:
故障时间段数据库一直处于繁忙状态,从数据库等待事件及性能分析报告都可以看出高峰时间段数据库正在进行备份操作,消耗了大量资源,导致前台相应时间变长。
为了进一步确认故障时间段是否有备份正在进行,查看备份相关信息,如图所示:
此处已经很明显了,确实备份一直在执行。
因此只要中断备份任务即可解决性能问题。
3. 解决方案
1)查看RMAN分配的各个通道的进程号:
select s.sid, s.serial#, p.spid, s.client_info from vsession s
where p.addr = s.paddr and s.program like ‘%rman%’ ;
SID SERIAL# SPID CLIENT_INFO
89 64899 5157
107 49576 5170
96 39108 5172 rman channel=ORA_DISK_1
2)根据第上面步骤中得到的进程号,终止RMAN备份:
[root@asmdb ~]# ps -ef | grep beq
oracle 1918 1 0 Jul10 ? 00:00:09 oracle+ASM (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 15790 1 0 08:53 ? 00:00:00 oracle+ASM (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 15892 15885 1 08:57 ? 00:00:00 oracleasmdb (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 15897 15885 1 08:57 ? 00:00:00 oracleasmdb (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 15898 15885 1 08:57 ? 00:00:00 oracleasmdb (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 15899 15885 2 08:57 ? 00:00:00 oracleasmdb (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 15900 15885 2 08:57 ? 00:00:00 oracleasmdb (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 15901 15885 5 08:57 ? 00:00:00 oracleasmdb (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
root 15903 15823 0 08:57 pts/3 00:00:00 grep beq
2)kill相关进程:
[root@asmdb ~]# kill -9 15898
[root@asmdb ~]# kill -9 15899
[root@asmdb ~]# kill -9 15900
[root@asmdb ~]# kill -9 15901
注意 这里既要kill 掉RMAN备份脚本的PID,也要kill 掉RMAN中分配的各个通道的PI
[root@asmdb ~]# ps -ef | grep rman
oracle 15885 15740 1 08:57 pts/2 00:00:02 rman target /
root 15926 15823 0 09:01 pts/3 00:00:00 grep rman
[root@asmdb ~]# kill -9 15885
- 案例总结
1)定期调整RMAN备份策略。
随着生产数据库数据量的增加备份策略需要定期调整。
2)检查网络及存储性能瓶颈。





