Print

【MVS】如何完全kill rman 备份进程

2025-04-04 发表

问题描述

现象

需要停止RMAN任务,直接杀掉rman备份主进程后,启动rman备份新任务后,RMAN任务卡顿。

解决方法

查分析

前一次RMAN进程可能未完全释放数据库资源(如锁、内存结构)、数据库后台进程可能仍在处理上次中断的备份操作等蒋导致数据库卡顿。

需要杀掉rman备份脚本的PID和各个通道的PID;

处理过程:

1.查看rman 进程信息;

SQL> set linesize 300

SQL>  select sid,spid,client_info from v$process p,v$session s where p.addr=s.paddr and client_info like '%rman%';

 

       SID SPID     CLIENT_INFO

---------- ------------------------ ----------------------------------------------------------------

      1011 113286     rman channel=ORA_DISK_4

      1024 113958     rman channel=ORA_DISK_7

      1143 112812     rman channel=ORA_DISK_2

      1215 112587     rman channel=ORA_DISK_1

        41 113559     rman channel=ORA_DISK_5

       207 114056     rman channel=ORA_DISK_8

       350 113026     rman channel=ORA_DISK_3

       795 94931     rman channel=ORA_DISK_1

       806 94932     rman channel=ORA_DISK_2

       818 94933     rman channel=ORA_DISK_3

       831 94934     rman channel=ORA_DISK_4

 

       SID SPID     CLIENT_INFO

---------- ------------------------ ----------------------------------------------------------------

       857 94936     rman channel=ORA_DISK_5

       877 94937     rman channel=ORA_DISK_6

       901 94940     rman channel=ORA_DISK_7

       914 94942     rman channel=ORA_DISK_8

      1035 113756     rman channel=ORA_DISK_6

 

16 rows selected.

2.根据当前rman 日志显示分配通道的SID,筛选出旧通道的SID;

  SID SPID     CLIENT_INFO

----- ------------------------ ------------------

  795 94931     rman channel=ORA_DISK_1

  806 94932     rman channel=ORA_DISK_2

  818 94933     rman channel=ORA_DISK_3

  831 94934     rman channel=ORA_DISK_4

  857 94936     rman channel=ORA_DISK_5

  877 94937     rman channel=ORA_DISK_6

  901 94940     rman channel=ORA_DISK_7

  914 94942     rman channel=ORA_DISK_8

3.查看系统进程

查询旧通道的PID后,发现该进程成为孤儿进程,而新rman备份任务的通道归属于新rman备份任务。

旧任务进程:

[oracle@hisdb2 database]$ ps -ef |grep 94931

oracle    94931      1  0 21:00 ?        00:00:30 oraclehisdb2 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle   126860   7987  0 22:15 pts/0    00:00:00 grep 94931

[oracle@hisdb2 database]$ ps -ef |grep 94932

oracle    94932      1  0 21:00 ?        00:00:28 oraclehisdb2 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle   127039   7987  0 22:15 pts/0    00:00:00 grep 94932

 

新任务进程

[oracle@hisdb2 database]$ ps -ef |grep 113026

oracle   113026 111114  0 21:42 ?        00:00:03 oraclehisdb2 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle   127080   7987  0 22:15 pts/0    00:00:00 grep 113026

[oracle@hisdb2 database]$ ps -ef |grep 111114

oracle   111114 111110  0 21:38 ?        00:00:04 rman app/oracle/db/11.2.0.4/bin/rman target / log /databk/log/incrbackup_hisdb2.log append

oracle   111244 111114  0 21:38 ?        00:00:01 oraclehisdb2 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle   111662 111114  0 21:39 ?        00:00:00 oraclehisdb2 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle   112587 111114  0 21:41 ?        00:00:05 oraclehisdb2 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle   112812 111114  0 21:41 ?        00:00:05 oraclehisdb2 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle   113026 111114  0 21:42 ?        00:00:04 oraclehisdb2 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle   113286 111114  0 21:42 ?        00:00:06 oraclehisdb2 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle   113559 111114  0 21:43 ?        00:00:03 oraclehisdb2 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle   113756 111114  0 21:43 ?        00:00:04 oraclehisdb2 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle   113958 111114  0 21:44 ?        00:00:02 oraclehisdb2 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle   114056 111114  0 21:44 ?        00:00:02 oraclehisdb2 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle   129056   7987  0 22:20 pts/0    00:00:00 grep 111114

4.杀掉旧rman任务的通道进程,

 # kill -9 26224

再次查询SQL,发现通道任务消失,同时系统中备份过程的临时文件也自动消失。

总结

如果单单kill掉RMAN的进程号,那么RMAN备份并没有停止,而是要连channel进程也一起掉才可以!