my opinion is my own

RDS Oracleでロックされているテーブルのセッションをkill

息をするようにalter system kill sessionで殺していたセッションもRDSであれば専用のパッケージを使わないとダメで忘れがちなので備忘のためメモ。

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#);

実行結果

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.
---

関連しているかもしれない記事


#Oracle #RDS