✂️

【Oracle/SQLServer】RDSのセッションの強制終了の仕方

2024/08/09に公開

1.はじめに

今回はAmazon RDS for Oracle/SQLServerでセッションを強制終了する方法について紹介します。

DBマネジメントツールでの操作でセッションを切断する際、以下エラーが出てしまうケースがあります。

今回はそうした場合でもセッションを切断できるSQL文を紹介します。

【Oracle SQL DeveloperのGUI操作でセッションを切断しようとした際のエラー】

ORA-01031: 権限が不足しています
ORA-06512: 行8
ORA-06512: 行8
01031. 00000 -  "insufficient privileges"
*Cause:    An attempt was made to perform a database operation without
           the necessary privileges.
*Action:   Ask your database administrator or designated security
           administrator to grant you the necessary privileges

2.SQLを利用した切断方法

以下SQLを実行することでセッションを強制的に切断できます。

■ Oracle

DECLARE
  CURSOR c_sessions IS
    SELECT sid, serial#
    FROM v$session
    WHERE username LIKE '任意のユーザ名';
BEGIN
  FOR sess IN c_sessions LOOP
    rdsadmin.rdsadmin_util.kill(sess.sid, sess.serial#);
  END LOOP;
END;

■ SQLServer

DECLARE @KillCmd NVARCHAR(MAX) = N'';
SELECT @KillCmd = @KillCmd + 'KILL ' + CAST(session_id AS NVARCHAR(10)) + '; '
FROM sys.dm_exec_sessions
WHERE login_name LIKE '任意のユーザ名';
 
EXEC sp_executesql @KillCmd;

付録

DBマネジメントツールでの切断方法

DBマネジメントツールでの切断方法も紹介します。

■ Oracle SQL Developer

Oracle SQL Developerを起動します。

「ツール」→「セッションのモニター」を選択します。

対象のセッションを右クリックで選択し、「セッションの中断」をクリックします。

■ SQL Server Management Studio

SQL Server Management Studioを起動します。

以下画像内の赤線部分をクリックします。

対象のセッションを右クリックし、「Kill Process」をクリックします。

Discussion