Note:206007.1 – How To Automate Cleanup Of Dead Connections And INACTIVE Sessions
Note:151972.1 – Dead Connection Detection (DCD) Explained
Note:159978.1 – How To Automate Disconnection of Idle Sessions
Note:160386.1 – How to Enable Oracle Net Dead Connection Detection or DCD
Note:395505.1 – How to Check if Dead Connection Detection (DCD) is Enabled in 9i ,10g and 11g
Note:438923.1 – How To Track Dead Connection Detection(DCD) Mechanism Without Enabling Any Client/Server Network Tracing
Note:601605.1 – A discussion of Dead Connection Detection, Resource Limits, V$SESSION, V$PROCESS and OS processes
Note:1484302.1 – Master Note Oracle Resource Manager (RM) DBMS_RESOURCE_MANAGER Overview (also go through Section: Applications of RM)
Note:1020004.6 – Script: List Inactive Users
Note:1018160.6 – Common Questions About Dead Connection Detection (DCD)
-- RAC环境用 gv$session ,单机用 V$SESSION
-- 由于kill session是直接将session kill掉,有可能出现导致事物回滚的现象,所以使用disconnect session完成当前事务并终止session。这种方式比alter system kill session跟安全可靠。
set lines 200 pages 50000
select s.inst_id,'alter system kill session '||''''||s.sid||','||s.serial# ||''';'||chr(10)|| '!kill '||p.spid||';'
from gv$process p, gv$session s
where s.username is not null
and s.LAST_CALL_ET > 2*60*60 ----LAST_CALL_ET is NOT the time the session has been INACTIVE but rather the time since the last query was issued
and s.status='INACTIVE'
and s.type<>'BACKGROUND'
and s.paddr = p.addr
order by s.inst_id desc;
set lines 200 pages 50000
select 'alter system kill session '||''''||s.sid||','||s.serial# ||''';'||chr(10)|| '!kill '||p.spid||';'
from v$process p, v$session s
where s.username is not null
and s.LAST_CALL_ET > 2*60*60 ----LAST_CALL_ET is NOT the time the session has been INACTIVE but rather the time since the last query was issued
and s.status='INACTIVE'
and s.type<>'BACKGROUND'
and s.paddr = p.addr;
Also Please go through the previous post for the similar questions,
https://communities.oracle.com/portal/server.pt/community/view_discussion_topic/216?threadid=223093
https://communities.oracle.com/portal/server.pt/community/view_discussion_topic/216?threadid=214483
https://communities.oracle.com/portal/server.pt/community/view_discussion_topic/216?threadid=155240
https://communities.oracle.com/portal/server.pt/community/view_discussion_topic/216?threadid=61984
vi tfsinses.sql
SET ECHO off
REM NAME: TFSINSES.SQL
REM USAGE:"@path/tfsinses.sql"
REM ------------------------------------------------------------------------
REM REQUIREMENTS:
REM SELECT on V$SESSION, V$PROCESS, V$SESSION_WAIT
REM ------------------------------------------------------------------------
REM PURPOSE:
REM This script lists inactive users in the database. The wait
REM sequence can be monitored to check whether this really is an
REM inactive user or not. The process id's can assist you to
REM remove the process
REM ------------------------------------------------------------------------
REM EXAMPLE:
REM Shadow Parent Wait
REM ORACLE/OS User Term SID SERIAL# Process ID Process ID Sequence
REM ---------------- ------ ---- ------- ---------- ---------- ---------
REM SYSTEM usupport ttype 6 21 26351 26350 28
REM
REM ------------------------------------------------------------------------
REM DISCLAIMER:
REM This script is provided for educational purposes only. It is NOT
REM supported by Oracle World Wide Technical Support.
REM The script has been tested and appears to work as intended.
REM You should always run new scripts on a test instance initially.
REM ------------------------------------------------------------------------
REM Main text of script follows:
set heading on feedback on pages 66
column userinfo heading "ORACLE/OS User" format a19
column terminal heading "Term" format a6
column process heading "Parent|Process ID" format a10
column spid heading "Shadow|Process ID" format a10
column seq# heading "Wait|Sequence" format 99999990
select s.username||' '||s.osuser userinfo,s.terminal, s.sid, s.serial#,
p.spid,
s.process , w.seq#
from v$session s, v$process p
,v$session_wait w
where p.addr = s.paddr
and s.sid = w.sid
and w.event = 'SQL*Net message from client'
and s.status = 'INACTIVE'
order by s.osuser, s.terminal
/
最新评论
这个牛
放下欲望,男人从来不醉,充分且必要
勇气、责任、自信、创新,为天下先!
软件即数据,软件即服务,软件即管理,软件就是对人类各种社会活动的仿真和记录。软件很重要,但软件不可能凌驾于业务之上,尤其不可能高人一等。