Is it safe to kill inactive sessions in Oracle?

Terminating Sessions and Cleaning Up Processes

This module describes how you can terminate sessions and clean up session-related operating system processes.

This module discusses the following:

Is it safe to kill inactive sessions in Oracle?
Overview
Is it safe to kill inactive sessions in Oracle?
Terminating Sessions Using SQL*Plus
Is it safe to kill inactive sessions in Oracle?
Terminating Sessions Using Enterprise Manager
Is it safe to kill inactive sessions in Oracle?
Terminating Session-related Operating System Processes on UNIX
Is it safe to kill inactive sessions in Oracle?
Terminating Session-related Operating System Processes on Windows

Is it safe to kill inactive sessions in Oracle?
Move your mouse over this icon to show all screenshots. You can also move your mouse over each individual icon to see only the screenshot associated with it.

Back to List of Topics

In this module you will learn how to terminate sessions using SQL*Plus and Enterprise Manager.

You should always terminate user sessions using Oracle tools. However, if the operating system process related to a terminated Oracle user session remains active, you can kill the session-related operating system process by following the appropriate steps for your operating system:

Back to List of Topics

You can terminate sessions with the ALTER SYSTEM KILL command. When you issue the ALTER SYSTEM KILL session command, you must specify the session's index number and serial number. To identify the session index number (sid) and serial number of a session, query the V$SESSION dynamic performance view as shown below. The value of the STATUS column will be ACTIVE when the session is making a SQL call to Oracle. It will be INACTIVE if it is not making a SQL call to Oracle.

Identify the correct session and terminate the session by performing the steps below:

1.

Invoke SQL*Plus.

2.

Query V$SESSION supplying the username for the session you want to terminate:

SELECT SID, SERIAL#, STATUS, SERVER
FROM V$SESSION
WHERE USERNAME = '<username>'

Is it safe to kill inactive sessions in Oracle?

3.

Execute the ALTER SYSTEM command to terminate the session:

ALTER SYSTEM KILL SESSION '<sid, serial#>'

Is it safe to kill inactive sessions in Oracle?

4.

Query V$SESSION:

SELECT SID, SERIAL#, STATUS, SERVER
FROM V$SESSION
WHERE USERNAME = '<username>'

Is it safe to kill inactive sessions in Oracle?

5.

After PMON has cleaned up after the session, the row is removed from V$SESSION:

SELECT SID, SERIAL#, STATUS, SERVER
FROM V$SESSION
WHERE USERNAME = '<username>'

Is it safe to kill inactive sessions in Oracle?

Back to List of Topics

Identify the correct session and terminate the session by performing the steps below.

Note: Oracle Enterprise Manager 9.2 was used in the examples.

1.

Select START > Programs > Oracle > OraHome92 > Enterprise Manager Console. Select Launch Standalone and click OK.

2.

Expand Databases. Expand your database. Expand Instance and select Sessions. Identify the session you want to terminate.

Is it safe to kill inactive sessions in Oracle?

3.

Expand Sessions. Select the session you want to terminate and click Kill Session:

Is it safe to kill inactive sessions in Oracle?

4.

Select Immediate and click OK:

Is it safe to kill inactive sessions in Oracle?

5.

STATUS changes to KILLED and SERVER changes to PSEUDO:

Is it safe to kill inactive sessions in Oracle?

6.

The row is removed after PMON has cleaned up after the session:

Is it safe to kill inactive sessions in Oracle?

Back to List of Topics

The PMON background process will clean up after any user session you terminate with the ALTER SYSTEM KILL SESSION command. You can kill the session-related operating system process by performing the steps outlined below:

1.

Invoke SQL*Plus.

2.

Issue the following query to determine the operating system process identifier (spid):

SELECT spid
FROM v$process
WHERE NOT EXISTS (SELECT 1 FROM v$session
WHERE paddr = addr);

Is it safe to kill inactive sessions in Oracle?

3.

If you are unable to identify the operating system process identifier (spid) from the query in step 2, you can issue the following query to help identify the correct session:

SELECT s.sid, s.serial#, p.spid
FROM v$process p, v$session s
WHERE p.addr = s.paddr
AND s.username = '<username>';
4.

At the operating system prompt, issue the kill command and supply the operating system process identifier (spid):

kill <spid>

Is it safe to kill inactive sessions in Oracle?

Back to List of Topics

The PMON background process will clean up after any user session you terminate with the ALTER SYSTEM KILL SESSION command. You can kill the session-related operating system process by performing the steps outlined below:

1.

Invoke SQL*Plus.

2.

Issue the following query to determine the operating system process identifier (spid) or thread:

SELECT spid, s.osuser, s.program
FROM v$process p, v$session s
WHERE p.addr = s.paddr;

Is it safe to kill inactive sessions in Oracle?

3.

At the operating system prompt, issue the orakill command. Supply the SID and the thread which you obtained from the SPID column in step 2:

orakill <sid> <thread>

Is it safe to kill inactive sessions in Oracle?

Move your mouse over this icon to hide all screenshots

Can we kill inactive session in Oracle?

You can terminate sessions with the ALTER SYSTEM KILL command. When you issue the ALTER SYSTEM KILL session command, you must specify the session's index number and serial number. To identify the session index number (sid) and serial number of a session, query the V$SESSION dynamic performance view as shown below.

What does Inactive session mean in Oracle?

It just means that someone is logged in but not executing SQL right at that instant. Your very own session is "INACTIVE" everytime you are in the process of typing in a query via sqlplus. It is a normal state to be in.

Why are there so many inactive sessions in Oracle?

Large numbers of long term inactive sessions are typically caused by problems with an application or an application server not handling its connections properly. The obvious thing to do is correct the problem at the source.

How do I kill an inactive session?

Update If you want to kill all the sessions, you could just prepare a small script. SELECT 'ALTER SYSTEM KILL SESSION '''||sid||','||serial#||''' IMMEDIATE;' FROM v$session; Spool the above to a . sql file and execute it, or, copy paste the output and run it.