2

このクエリがあります:

ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;

同じSQLIDを持つすべてのセッションを強制終了する必要があります

物事をつなぐ方法がわかりませんが、これまでのところ次のようになっています。

for rec in (SELECT se.sid,ss.serial# 
              FROM v$session ss, v$sesstat se, v$statname sn 
             WHERE se.statistic# = sn.statistic# 
               AND name like '%CPU used by this session%' 
               AND se.sid = ss.sid 
               AND ss.status = 'ACTIVE' 
               AND ss.username is not null 
               AND ss.sql_id ='f7frew3erwe'
             ORDER BY value ASC) loop
  ALTER SYSTEM KILL SESSION 'rec.sid,rec.serial#' IMMEDIATE; //this is the tricky part!
end loop;

助言がありますか?

4

1 に答える 1

8

質問は、Oracleデータベースに接続しているすべてのセッションを強制終了するにはどうすればよいですか?に似ています。ただし、すべてのセッションで使用できるわけではありません。

execute immediatePL / SQLブロックのシステムを変更するには、以下を使用する必要があります。

execute immediate 'Alter System Kill Session '''|| rec.Sid  
                       || ',' || rec.Serial# || ''' IMMEDIATE';

追加のシステムテーブルをすべて使用する必要があるかどうかを問い合わせます。殺したいのが特定のものだけの場合は、次のクエリのようなもので十分な場合SQL_IDがあります。

SELECT se.sid,ss.serial# 
  FROM v$session
 WHERE status = 'ACTIVE' 
   AND username is not null 
   AND sql_id ='f7frew3erwe'
于 2012-04-10T12:27:40.103 に答える