Oracle杀会话回滚时间长处理办法
获取被KILL会话的SID:
set line 200 pages 1000
col event for a30
col program for a35
col username for a10
col exec_time for 9999999999
col sql_id for a15
col machine for a30
col ssid for a13
col state for a20
col status for a10
select inst_id||':'||sid||','||serial# ssid,username,sql_id,sql_exec_id,event,
substr(program,1,25) program,machine,state,last_call_et exec_time,status
from gv$session
where wait_class<>'Idle' and username is not null
order by last_call_et;...
1:633,52377 APPUSER 13bqm6vvsn5s6 db file sequential read sqlplus@etlhost (TNS V1-V3) etlhost WAITING 243509 KILLED
注意最后一列状态为KILLED。
获取被KILL会话对应的操作系统进程号PID:
select spid from v$process
where addr in (select paddr
from v$session
where username='APPUSER' and sid=633);SPID
------------------------
273322--或者
select spid from v$process
where addr in (select creator_addr
from v$session
where username='APPUSER' and status='KILLED');
或者:
SET LINESIZE 100
COLUMN spid FORMAT A10
COLUMN username FORMAT A10
COLUMN program FORMAT A45SELECT s.inst_id,s.sid,s.serial#,p.spid,s.username,s.program
FROM gv$session sJOIN gv$process p ON p.addr = s.paddr AND p.inst_id = s.inst_id
WHERE s.type != 'BACKGROUND'
and s.username='APPUSER';INST_ID SID SERIAL# SPID USERNAME PROGRAM
---------- ---------- ---------- ---------- ---------- ---------------------------------------------1 633 52377 273322 APPUSER sqlplus@etlhost (TNS V1-V3)1 722 1331 104848 APPUSER sqlplus@etlhost (TNS V1-V3)1 777 64051 104254 APPUSER sqlplus@etlhost (TNS V1-V3)1 938 51475 104793 APPUSER sqlplus@etlhost (TNS V1-V3)1 1101 55005 161435 APPUSER plsqldev.exe1 1172 21141 101804 APPUSER sqlplus@etlhost (TNS V1-V3)1 2036 42029 161411 APPUSER plsqldev.exe7 rows selected.
操作系统层面杀掉对应连接:
[oracle@dbhost ~]$ ps -ef | grep oracle | grep LOCAL | grep 273322
oracle 273322 1 28 Oct15 ? 19:25:50 oracleorcldb (LOCAL=NO)[oracle@dbhost ~]$ kill -9 273322
References
[1] https://blog.51cto.com/u_13631369/6251425