This is an English translation of a Japanese blog. Some content may not be fully translated.
Oracle

Killing Sessions for Locked Tables in RDS Oracle

On-premises, killing sessions with alter system kill session was second nature, but in RDS you need to use a dedicated package. This is easy to forget, so here are notes as a reminder.

SELECT
    X.SID
  , X.SERIAL#
  , TO_CHAR(
        X.SQL_EXEC_START
      , 'YYYY/MM/DD HH24:MI:SS'
    ) AS SQL_EXEC_START
  , Y.SQL_TEXT
FROM
    V$SESSION X
        INNER JOIN V$SQL Y
           ON Y.HASH_VALUE = X.SQL_HASH_VALUE
          AND Y.ADDRESS    = X.SQL_ADDRESS
WHERE
    X.STATUS = 'ACTIVE'
AND X.SID IN (
        SELECT
            Z.SID
        FROM
            V$LOCK Z
        WHERE
            Z.TYPE IN ('TM','TX')
    )
;
exec rdsadmin.rdsadmin_util.kill(SID,SERIAL#);

Execution Result

SQL> SELECT
    X.SID
  , X.SERIAL#
  , TO_CHAR(
        X.SQL_EXEC_START
      , 'YYYY/MM/DD HH24:MI:SS'
    ) AS SQL_EXEC_START
  , Y.SQL_TEXT
FROM
    V$SESSION X
        INNER JOIN V$SQL Y
           ON Y.HASH_VALUE = X.SQL_HASH_VALUE
          AND Y.ADDRES  2    3    4    5    6    7    8    9   10   11   12   13  S    = X.SQL_ADDRESS
WHERE
    X.STATUS = 'ACTIVE'
AND X.SID IN (
        SELECT
            Z.SID
        FROM
            V$LOCK Z
        WHERE
            Z.TYPE IN ('TM','TX')
    )
; 14   15   16   17   18   19   20   21   22   23   24

       SID    SERIAL# SQL_EXEC_START
---------- ---------- -------------------
SQL_TEXT
--------------------------------------------------------------------------------
      1292	50094 2021/04/23 06:41:41
insert into PARTTBL_MAIN_1 select * from PARTTBL_MAIN_1
SQL>  exec rdsadmin.rdsadmin_util.kill(1292,50094);

PL/SQL procedure successfully completed.
Suggest an edit on GitHub