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 Partiotionオプションの代替策(View+Trigger)を試してみる
- OracleのリアルタイムSQL監視
- Oracle Enterprise EditionからStandard Editionへのダウングレード検討メモ
- RDS(Oracle)にData Pumpでインポートする
- OracleとPostgreSQLのシーケンスキャッシュの動作差異