Cómo buscar (y matar) sesiones de RMAN en Oracle Database

En esta entrada vamos a ver, de forma rápida, como localizar y manipular sesiones de RMAN en Oracle Database. Específicamente, cómo matar sesiones lanzando un alter system kill session una vez localizado el SID y SERIAL# de la misma.

El primer paso es localizar las sesiones activas de RMAN, para ello conectamos vía SQLPLUS a la base de datos y lanzamos la siguiente consulta:

SQL> select b.sid, b.serial#, a.spid, b.client_info
from v$process a, v$session b
where a.addr=b.paddr and client_info like 'rman%';

El resultado será un listado de las sesiones de RMAN junto a su SID, SERIAL# y SPID:

SID        SERIAL#    SPID         CLIENT_INFO
---------- ---------- ------------ ---------------------------------
351        31412       632          rman channel=ORADSK01

Con esta información, ya podemos manipular la sesión. En el caso de querer finalizarla/matarla, la query a ejecutar en SQLPLUS es la siguiente:

SQL> alter system kill session '351,31412' immediate;

El output de la ejecución del comando debería mostrar:

system altered.

Y el proceso de RMAN a nivel de sistema operativo rman target / también debería haber finalizado:

[oracle@db01 ~]$ ps -ef | grep rman | grep -v grep
[oracle@db01 ~]$

Tras matar la sesión desde SQLPLUS (o si hicierais un SIGKILL al proceso directamente…), la salida de la ejecución de RMAN mostrará la confirmación de finalización del job:

[...]
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 12/12/2019
ORA-00028: your session has been killed
continuing other job steps, job failed will not be re-run
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 12/12/2019
ORA-00028: your session has been killed
[...]