SOAINFRA inactive sessions
Hi,
When i query the v$session table i can see that there are some 300 odd inactive sessions in the DB for the SOA-INFRA schema. When i bring the manged servers down all the inactive sessions disappear. I have aborted all the running instances but the inactive session count still doesn't come down.
Please share your views on this.
Hi,
What are the events/programs of those sessions?
Have you started the application or not yet?
Go through the following documents and see if it helps.
Note: 427759.1 - How To Prevent Inactive JDBC Connections In Oracle Applications
https://metalink2.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&p_id=427759.1
Note: 261791.1 - 11i JDBC Thin client connections remain active, MAX PROCESSES REACHED
https://metalink2.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&p_id=261791.1
Regards,
Hussein
Similar Messages
-
PL/SQL procedure to kill inactive session
Hi all ,
Please i am trying to write a procedure to kill inactive sessions of the shema 'TESTSCHEMA' .This is my first procedure , am not use to pl/sql but i went through many turtorial but have some errors at compliation .when i try to compile the procedure the errors are as below :
15:50:28 Start Find Objects [TESTSCHEMA@TESTDB_UNIX(2)] ...
15:50:28 End Find Objects [TESTSCHEMA@ TESTDB_UNIX(2)]
15:50:32 Start Compiling 1 object(s) ...
15:50:32 Executing ALTER PROCEDURE fib_dead_cnx_cleanup COMPILE ...
15:50:32 [13:2] PL/SQL: ORA-00933: SQL command not properly ended
15:50:32 [9:3] PL/SQL: SQL Statement ignored
15:50:32 [18:12] PLS-00103: Encountered the symbol "(" when expecting one of the following:
15:50:32 constant exception <an identifier>
15:50:32 <a double-quoted delimited-identifier> table LONG_ double ref
15:50:32 char time timestamp interval date binary national character
15:50:32 nchar
15:50:32 The symbol "<an identifier>" was substituted for "(" to continue.
15:50:32 [18:21] PLS-00103: Encountered the symbol "LOOP" when expecting one of the following:
15:50:32 := ; not null default character
15:50:32 The symbol "; was inserted before "LOOP" to continue.
15:50:32 [27:8] PLS-00103: Encountered the symbol "ALTER" when expecting one of the following:
15:50:32 begin case declare exit for goto if loop mod null pragma
15:50:32 raise return select update while with <an identifier>
15:50:32 <a double-quoted delimited-identifier> <a bind variable> <<
15:50:32 close current delete fetch lock insert open rollback
15:50:32 savepoint set sql execute commit forall merge pipe
15:50:32 Compilation complete - 5 error(s) found
15:50:32 End Compiling 1 object(s)
below is the procedure code :
CREATE OR REPLACE
PROCEDURE fib_dead_cnx_cleanup
AS
l_serial CHAR(100);
l_sid CHAR (100);
l_sid_serial CHAR(100);
l_count NUMBER(10,0);
CURSOR session_cur IS
SELECT sid,serial#,sid||','||serial# as sid_serial
FROM v$session
WHERE username='EBBFCAT' and schemaname='TESTSCHEMA'
and status='INACTIVE'
BEGIN
BEGIN
l_count := 0;
OPEN session_cur;
WHILE ( 1 = 1) LOOP
BEGIN
FETCH session_cur INTO l_sid ,l_serial,l_sid_serial ;
EXIT WHEN session_cur%NOTFOUND ;
BEGIN
alter system kill session 'l_sid_serial' ;
END;
END;
END;
CLOSE session_cur;
END;
END FIB_DEAD_CNX_CLEANUP;
ThanksHi,
Never write, let alone post, unformatted code.
When posting any formatted text on this site, type these 6 characters:
{code}
(small letters only, inside curly brackets) before and after sections of formatted text, to preserve spacing.
Among the benefits of formatting: you can indent to show the extent of blocks, such as BEGIN-END.
Different types of blocks need modifiers after the end, such as "END *IF* " and " END *LOOP* ". If each opening statement (BEGIN, IF, LOOP) is directly above its corresponding END, then it's easy to check if you got the right modifier.
Here's what you code looks like with some formatting, and a couple of corrections added. Look for -- comments.
CREATE OR REPLACE
PROCEDURE fib_dead_cnx_cleanup
AS
l_serial CHAR(100);
l_sid CHAR (100);
l_sid_serial CHAR(100);
l_count NUMBER(10,0);
CURSOR session_cur IS
SELECT sid
, serial#
, sid || ','
|| serial# as sid_serial
FROM v$session
WHERE username = 'EBBFCAT'
and schemaname = 'TESTSCHEMA'
and status = 'INACTIVE'; -- need semicolon here
BEGIN
BEGIN -- Why?
l_count := 0;
OPEN session_cur;
WHILE ( 1 = 1)
LOOP
BEGIN -- Why?
FETCH session_cur
INTO l_sid
, l_serial
, l_sid_serial ;
EXIT WHEN session_cur%NOTFOUND ;
BEGIN -- Why?
alter system kill session 'l_sid_serial' ; -- Not a PL/SQL command
END;
END;
END LOOP; -- LOOP ends with END LOOP
CLOSE session_cur;
END;
END FIB_DEAD_CNX_CLEANUP;Take baby steps.
I've been wrtiing PL/SQL for 20 years, and I would never write that much code at once. If you're a beginner, all the more reason to start small. Write as little as possible, test, debug and test again (if necessary). When you have someting working, add 2 or 3 more lines and test again.
It looks like you have three BEGIN statements that don't serve any purpose. You should get rid of them (and their corresponding END statements, of course).
One error I did not fix: ALTER SYSTEM is not a PL/SQL statement. It's a SQL statement. You can run a SQL statement inside PL/SQL by using dynamic SQL, where you construct a string containing the SQL statement, and then use dbms_sql or EXECUTE IMMEDIATE to run it.
Edited by: Frank Kulash on Aug 18, 2009 12:37 PM -
Iam in need of a script to kill all the inactive sessions in the database and the same script should kill all the pid related in the OS also.
can anyone send me a scripts or any input on this will be of great help ?
KaiKaiS,
See both functions and wrap around in your unix script, this should magic for you I suppose :) and you should replace sqlplus "/as sysdba" by sqlplus '/as sysdba'
*function readSqlstmt {*
typeset stmt=$1
echo "
set feedback off
set verify off
set heading off
set pagesize 0
whenever sqlerror exit 1
whenever oserror exit 2
*$stmt;*
exit
*" | sqlplus -S "/as sysdba" >> test.log*
function killpid {
killpidsql=killpid.sql
sqlplus -s "/as sysdba" << ENDOFSQL >> test.log
whenever sqlerror exit 1
whenever oserror exit 2
SET pagesize 0
SET verify off
SET feedback off
SPOOL ${killpidsql}
SELECT 'ALTER system kill session ''' || s.sid || ',' || s.serial# || ''';'
FROM v\$session s, v\$process p
WHERE s.paddr = p.addr AND s.status = 'INACTIVE';
SPOOL OFF
@${killpidsql}
ENDOFSQL
Example: How to use above readSqlstmt function, to kill unix process id and call "killpid" to kill sessions from oracle.
*readSqlstmt "SELECT p.spid FROM v\$session s, v\$process p WHERE s.paddr = p.addr AND s.status = 'INACTIVE'" | while read u*
*do*
* #echo "kill -9" $u >> test.log*
* echo $u*
*done*
*Regards*
Edited by: OrionNet on Dec 10, 2008 10:52 PM
Edited by: OrionNet on Dec 10, 2008 10:54 PM -
Inactive sessions in v$session
Hi,
why there are so many apps user inactive sessions in v$session?
RegardsHi Hussein,
The process which are arctive are shown as inactive in v$session view,We cannot trust the status column of this view,By default as soon the apps is started the oracle is creating around 82 to 85 apps processes which are inactive but i think they are active.
The option referenced above is a good one to follow in this situation
A discussion of Dead Connection Detection, Resource Limits, V$SESSION, V$PROCESS and OS processes
Thanks Hussein and Anchorage
Regards -
Inactive sessions in v$session. True problem
Hi,
I am working in an Oracle 9i/Weblogic/J2EE platform. And when i look for session info in v$session view, i see that there are many sessions that have a status "Inactive". I already figured out what it means- the session is ACTIVE when it is doing an SQL query at the time and the session is INACTIVE when it is not doing an SQL query at that particular moment.
But i have questions:
1) If a client logs in to my webapplication and does a SQL query- then the sessions status is ACTIVE. After that, when the client just leaves (logs out just closes the browser) then Oracle marks that connection as 'INACTIVE'- Oracle does not KILL that session.
Ok let that be, but can another client then log in to my webapplication (from different computer) and get that same INACTIVE connection and start to use it?? If not, then these "abandoned" connection are truly useless, because they still use ORACLE resources (memory).
2)Another thing is that there are many INACTIVE sessions in v$session that have a name "plsqldev.exe" in PROGRAM column. That is a database client that i use to connect directly to my DB. But basicly i have only one PL/SQL program with one SQL query window open (this session is marked ACTIVE in v$session). So are these other 10 INACTIVE "plsqldev.exe" sessions meant for new plsql clients that may start to use the database or can only that particular user for whom the session was created at first place use that session?
And finally- sessions that are INACTIVE and have "plsqldev.exe" as a PROGRAM in v$session - is there any chance that a client logs in to webapplication and then gets that INACTIVE session?
If not, then these 10 INACTIVE plsqldev sessions (allthough the user has maybe shut down the program) are wasteless for webapplication users and they just starve the database.
Also a screenshot for illustration.
Waiting for your comments,
Thanks!If connection pooling is in use then yes a different end-user can reuse the "inactive" session. Remember that ACTIVE and INACTIVE really only refers to if the session is executing SQL at the exact moment you query v$session.
In the case of a dedicated user connection using a product like Oracle Forms where the user spends much of the time reading and filling in screen fields the Oracle background session can show INACTIVE almost constantly because the queries being ran by the user are very fast.
Take a look at the last_call_et column. This is the time in seconds from when the last SQL statement was issued (not completed). If this value is resetting then the queries are being done.
If the time is large and the status is INACTIVE then you could have a 'dead' or 'runaway' background process which is a background process without a front-end process. Those can and should be terminated. For that matter sessions that are idle for long periods of time should probably also be killed. If nothing else runaway and idle sessions may make it appear you are using all your licensed connections even if you really are not.
Most connection pools wil automatically restart a terminated connection so if you clean-up process terminates an idle pooled connection it should not be a problem.
HTH -- Mark D Powell -- -
We are using Oracle 11 as a backend to PowerSchool (a student information system) with 6 application servers (dc-ps-01 thru -06). Using the following SQL, we are seeing numerous INACTIVE sessions vs ACTIVE.
select
count(b.machine) as mCount,
b.machine box,
b.status,
b.osuser os_user,
b.program program
from
v$session b, v$process a
where
b.paddr = a.addr and type='USER'
group by
b.machine,b.osuser,b.program,b.status
order by
b.status, mCount desc, box;
Sample output:
MCOUNT Box Status OS_USER Program
*2 DC-PS-01* ACTIVE powerschool JDBC Thin Client
1 DC-PS-DB1 ACTIVE DC-PS-DB1$ OMS
1 DC-PS-DB1 ACTIVE SYSTEM ORACLE.EXE (J001)
1 DC-PS-DB1 ACTIVE SYSTEM ORACLE.EXE (J000)
406 DC-PS-05 INACTIVE powerschool JDBC Thin Client
*44 DC-PS-01* INACTIVE powerschool JDBC Thin Client
36 DC-PS-03 INACTIVE powerschool JDBC Thin Client
32 DC-PS-04 INACTIVE powerschool JDBC Thin Client
28 DC-PS-02 INACTIVE powerschool JDBC Thin Client
17 DC-PS-06 INACTIVE powerschool JDBC Thin Client
7 DC-PS-DB1 INACTIVE DC-PS-DB1$ OMS
While the number of ACTIVE sessions fluctuate, the number of INACTIVE ones do not decrease. Would someone explain the internal working of this?
Thanks!Note that the status column of v$session only shows ACTIVE while the Oracle session background process is busy performing a SQL statement on behalf of the front-end session. If the application spends most of its time with the user entering data onto or reading results off a screen then the session is going to appear INACTIVE most of the time in Oracle.
Also check the last_call_et to see how long it has been since the session issued a request to Oracle. This is how to tell if the session is truely INACTIVE.
If the front-end application uses connection pooling then depending on how many connections the application is set to grab and what kind of connection pool session management the front-end product provides you can have a lot of basically unneeded and truely inactive sessions.
HTH -- Mark D Powell -- -
DBA Reports large number of inactive sessions with 11.1.1.1
All,
We have installed System 11.1.1.1 on some 32 bit windows test machines running Windows Server 2003. Everything seems to be working fine, but recently the DBA is reporting that there are a large number of inactive sessions throwing alarms that we are reaching our Max Allowed Process on the Oracle Database server. We are running Oracle 10.2.0.4 on AIX.
We also have some System 9.3.1 Development servers that point at separate schemas in this environment and we don't see the same high number of inactive connections?
Most of the inactive connections are coming from Shared Services and Workspace. Anyone else see this or have any ideas?
Thanks for any responses.
Keith
Just a quick update. Originally I said this was only with 11.1.1.1 but we see the same high number of inactive sessions in 9.3. Anyone else see a large number of inactive sessions. They show up in Oracle as JDBC_Connect_Client. Does Shared Service, Planning Workspace etc utilize persistent connections or does it just abandon sessions when the windows service associated with an application is shutdown? Any information or thoughts are appreciated.
Edited by: Keith A on Oct 6, 2009 9:06 AMHi,
Not the answer you are looking for but have you logged it with Oracle as you might not get many answers to this question on here.
Cheers
John
http://john-goodwin.blogspot.com/ -
Is there a way to set inactive sessions to timeout after a certain period of time?
You may consider to use SQLNET.EXPIRE_TIME
REFERENCE: http://download.oracle.com/docs/cd/B12037_01/network.101/b10776/sqlnet.htm
============================================================
SQLNET.EXPIRE_TIME
Purpose
Use parameter SQLNET.EXPIRE_TIME to specify a the time interval, in minutes, to send a probe to verify that client/server connections are active. Setting a value greater than 0 ensures that connections are not left open indefinitely, due to an abnormal client termination. If the probe finds a terminated connection, or a connection that is no longer in use, it returns an error, causing the server process to exit. This parameter is primarily intended for the database server, which typically handles multiple connections at any one time.
Limitations on using this terminated connection detection feature are:
* It is not allowed on bequeathed connections.
* Though very small, a probe packet generates additional traffic that may downgrade network performance.
* Depending on which operating system is in use, the server may need to perform additional processing to distinguish the
connection probing event from other events that occur. This can also result in degraded network performance.
Default 0
Minimum Value 0
Recommended Value 10
Example
SQLNET.EXPIRE_TIME=10 -
[SOLVED]What is the meaning of any/active/inactive session in polkit?
Wiki said 「inactive sessions are generally remote sessions (SSH, VNC, etc.) 」.
So I changed the *.policy file like below to execute the action without password only when I am logging in remotely.
(Just for clarifying the difference between any/active/inactive session.)
<allow_any>no</allow_any>
<allow_inactive>yes</allow_inactive>
<allow_active>no</allow_active>
Contrary to expectations, I couldn't execute the action remotely without password.
So I changed again like below.
<allow_any>yes</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>no</allow_active>
This time, I was able to execute the action remotely without password.
From the above, I think the remote session is neither active nor inactive.
Is it true? If so, what is the inactive session?
What is the definition of active/inactive?
Last edited by remingtontonpon (2014-08-04 06:16:52)'man polkit' explains that 'allow_inactive' and 'allow_active' are for sessions on local consoles.
Only 'allow_any' applies to any client local or remote.
This seems confirmed by what you observe on your machine. -
Inactive sessions increasing in database
Hi
Recently i migrated Oracle9i database to oracle10g database 64 bit on windows 2008 server.
After Migration.Inactive sessions are not automatically flushing from database,and these inactive sessions are reaching maximum sessions limits that leads to Database Hang.
How can i solve this inactive sessions problem?
Thanks
With Regards
OHdamorgan wrote:
desc sys.kottd$Interesting table and custom data type.
SQL> set long 9999
SQL> col SQL format a50
SQL>
SQL> select
2 DBMS_METADATA.get_ddl( 'TABLE', 'KOTTD$', 'SYS') as SQL
3 from dual;
SQL
CREATE TABLE "SYS"."KOTTD$" OF "SYS"."KOTTD"
OIDINDEX ( PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 65536 NEXT 1048576 MINEX
TENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFF
ER_POOL DEFAULT)
TABLESPACE "SYSTEM" )
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS
LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MA
XEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GRO
UPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "SYSTEM"
SQL>
SQL>
SQL> select
2 DBMS_METADATA.get_ddl( 'TYPE', 'KOTTD', 'SYS') as SQL
3 from dual;
ERROR:
ORA-31603: object "KOTTD" of type TYPE not found in schema "SYS"
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105
ORA-06512: at "SYS.DBMS_METADATA", line 2805
ORA-06512: at "SYS.DBMS_METADATA", line 4333
ORA-06512: at line 1
no rows selected
SQL>
SQL> col attr_name format a30
SQL> col attr_type_name format a30
SQL> select
2 attr_no,
3 attr_name,
4 attr_type_name
5 from dba_type_attrs
6 where type_name = 'KOTTD'
7 and owner = 'SYS'
8 order by attr_no;
ATTR_NO ATTR_NAME ATTR_TYPE_NAME
1 KOTTDKVN UNSIGNED BINARY INTEGER(32)
2 KOTTDSCH VARCHAR2
3 KOTTDNAM VARCHAR2
4 KOTTDUVN VARCHAR2
5 KOTTDTC UNSIGNED BINARY INTEGER(16)
6 KOTTDTDS CANONICAL
7 KOTTDNDS CANONICAL
8 KOTTDFLG UNSIGNED BINARY INTEGER(16)
9 KOTDVSN UNSIGNED BINARY INTEGER(16)
10 KOTTDBDY KOTTB
10 rows selected.
SQL> -- not even a varchar2 attr of the data type "accessible"
SQL> select KOTTDNAM from sys.kottd$ where rownum < 11;
select KOTTDNAM from sys.kottd$ where rownum < 11
ERROR at line 1:
ORA-00904: "KOTTDNAM": invalid identifier
SQL> -- Calling the constructor? Oracle no likes..
SQL> select KOTTD( null, 'test','test','test',null,null,null,null,null,null) from dual;
select KOTTD( null, 'test','test','test',null,null,null,null,null,null) from dual
ERROR at line 1:
ORA-00600: internal error code, arguments: [qctcte1], [0], [], [], [], [], [], []
SQL> -
Inactive sessions increasing database
Hi
We are using oracle11.5.10.2 on windows 2000 server and database version 10.2.0.3
we are facing problem with inactive sessions,grdually inactive sessions increasing and thats leads database crash.
Temporary i increased processes parameter value tp 400 prviously it was 200
Most of inactive session from apps user only
How can i fix this problem?
Thanks
With Regards
OHHi,
Please see these threads.
how to kill inactive sessions????????
how to kill inactive sessions????????
Inactive sessions in Database
Re: Inactive sessions in Database
Regards,
Hussein -
Hi,
Lot inactive sessions are in database, Before we bounce database ----> max process got reached, For that we have changed max process and bounced the database but i can see still 75 inactive sessions in database,
SQL> show parameter process
NAME TYPE VALUE
aq_tm_processes integer 1
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 2
log_archive_max_processes integer 2
processes integer 200
SQL> show parameter spfile
NAME TYPE VALUE
spfile string
Then i changed processes to 300
SQL> show parameter process
NAME TYPE VALUE
aq_tm_processes integer 1
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 2
log_archive_max_processes integer 2
processes integer 300
even after bouncing still 75 inactive sessions in databaseHi,
What are the events/programs of those sessions?
Have you started the application or not yet?
Go through the following documents and see if it helps.
Note: 427759.1 - How To Prevent Inactive JDBC Connections In Oracle Applications
https://metalink2.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&p_id=427759.1
Note: 261791.1 - 11i JDBC Thin client connections remain active, MAX PROCESSES REACHED
https://metalink2.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&p_id=261791.1
Regards,
Hussein -
Inactive sessions of oracle consume resources?
We Red Hat and Data Base Oracle 10g.
Gracias y saludos.Please define 'inactive session'.
I see several possible definitions. A few of the more likely include:
- a session that is still connected to the end client, and therefore prepared to perform some work and therefore will consume resources
- a session that has been forcibly disconnected and is rolling back or waiting to roll back, and is therefore consuming resources
- a Linux or Unix zombie session, which may still hold memory but no CPU cycles
Depending on the tools used to report the information, the SGA memory may be reported again and again for each session's process. This can cause some alarming interpretations. -
Inactive sessions increasing over time
But, the number of open connectios(ie.,other than SYSTEM active session,
i could see only inactive sessions ) is not staying constant.
Rather,it grows over time.
[NOTE:
I dont know why the application user sessions are always in inactive state.
If they didn't use that session at all (or) if the session is not doing any operation means , why unnecssarily the have to open these many inactive sessions.]
Can you please give me a solution to overcome the application's connection leak?This appears to be a duplicate of the post I replied to in When we go for shared Server environment?
Justin -
Inactive sessions while using Iplanet server
Hi all,
I am facing a strange problem. On application level we use 'apps' user to login in oracle. It was working fine earlier. But now a days when we login thru it the performance becomes slow,when I checked the sessions, it shows me 250 inactive sessions.The max limit of sessions is 400.
Then I have to manually kill the inactive sessions and application starts working fine . Any idea about this problem?
Oracle version is 10g version 2
Thanx and regardsI am not very sure but there must be some property from which you can kill the inactive session which has taken more time.
Cheers
Maybe you are looking for
-
ERS Output email/fax to different ID (CONSNUMBER) in vendor master
Hi Guru, I am just wondering if there is a way to change the ERS output to different email/fax ID than the default one in vendor master. As a default in SAP, the Purchasing documents ie. PO, RFQ and ERS outputs will be sent to default emial/fax (of c
-
CVD VALUE GETTING INVENTORIZED IN IMPORT PO
Hi Friends, In my Factory based stock transport PO for import purchase, I have mentioned CVD and EDB condition type. When I take receipt of the material, for the oubound delivery (plant A to plant B) , the CVD value is getting inventorised. Since I
-
Specific value in one field determines value in fields
I am building a form using Adobe Pro and I am fairly new to Java Script. One of the fields I am creating can only be a specific value (nra). If nra is selected it needs to blank out a second field and put a number 1 in a third field. Can java script
-
I am creating an Flex Mobile App that is mostly portrait. I do have a few views I need to be landscape. In design view I choose landscape but when viewed in simulator/device it shows as portrait. Is there a property or something I can set on the view
-
Is it possible to link each line item from an ASN to separate cFolders
Hi, Could you help me with the question mentioned in the subject line? I am very new to cFolders and do not have anyone around inperson to help me out with this. Thanks Is it possible to link each line item from an ASN to separate cFolders SS