[Oracle工程师手记]如何找到 RMAN 的所有 session

有时候,为了监控了解 RMAN 的运行状况,我们需要所有的 RMAN 的 session 信息,如何找到这些 session 呢,可以利用 v$process 以及 v$session 中的一些如 client_info 、module_name、program 之类,来进行查找。

set linesize 300
col spid format 99999
col serial# format 99999
col spid format a10
col event format a20
col p1 format 999999999999
col p2 format 9999999
col p3 format 9999999
col blocker format 9999999
col client format a12

SELECT s.sid, s.serial#,spid, s.event, s.p1,s.p2,s.p3, s.blocking_session as blocker,client_info as client
 FROM v$process p, v$session s
 WHERE p.addr = s.paddr
 AND client_info LIKE '%rman%';

 
结果的例子:

      SID SERIAL# SPID       EVENT                           P1       P2       P3  BLOCKER CLIENT
---------- ------- ---------- -------------------- ------------- -------- -------- -------- ------------
       33    2807 16514      SQL*Net message from    1650815232        1        0          rman channel
                              client                                                       =ORA_DISK_1

结果里可能会有很多条记录,代表了执行 rman 的有复数个 session 。

上面的查询,我利用了 clinet_info,在不同版本的数据库中,rman session 的 v$process 、v$session 的信息也不完全一样。为了稳妥起见,也要查一下 program like '%rman%'  、module_name like '%rman%' 之类的session。

原文地址:https://www.cnblogs.com/gaojian/p/14631578.html