Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> RE: understanding orphaned processes (v$process > v$session)
Thanks to all who replied.
I raised a tar with Oracle, they said that=20
1. orphaned processes are caused by abnormal exits by =
applications/clients.
2. These can be cleared by using Dead Connection Detection, however DCD =
does not work if u use thin jdbc.
3. v$process can be greater then v$session if one uses parallel query or =
MTS.
We are now tracing this problem from the application side, to determine =
what caused the sessions to die.
thanks & regards
ratnesh=20
-----Original Message-----
From: oracle-l-bounce_at_freelists.org
[mailto:oracle-l-bounce_at_freelists.org]On Behalf Of Tanel P=F5der
Sent: Saturday, May 01, 2004 11:57 AM
To: oracle-l_at_freelists.org
Subject: Re: understanding orphaned processes (v$process > v$session)
> I too have seen this condition. I'm not sure I understand the
> client side mechanics, but from a server perspective, a process
> is created when an attempt to connect to the database is made,
> but a session is only created when the connection is actually
> made.
>
> sqlplus /nolog <--- creates a process
> connect scott/tiger <----- actually creates a session for the
> process
When you run sqlplus /nolog, no server processes are created, sqlplus =
won't
make any connections in this mode.
When you issue connect command, then sqlplus automatically does both
connection and session creation for you. Connection requires a new =
server
process to be allocated (in dedicated server mode, either by spawning a =
new
process or using a prespawned process). The session is then created =
through
this connection using the spawned server process.
If you'd use OCI, you could separately call OCIServerAttach() function =
for
creating the connection and OCISessionBegin() for creating a session
(through the existing connection if connection pooling isn't used).
Note that in connection pooling and migratable session environments =
there is
no one-to-one relationship between connection(server process) and =
session
anymore.
So if the application has a bug in it which always creates a new =
connection
for session but forgets to use OCIServerDetach() to end the connection =
when
it's not needed anymore, you could end up with lots of open connections =
&
server processes which aren't used by any sessions..
Tanel.
-- Archives are at http://www.freelists.org/archives/oracle-l/ FAQ is at http://www.freelists.org/help/fom-serve/cache/1.html ----------------------------------------------------------------- ---------------------------------------------------------------- Please see the official ORACLE-L FAQ: http://www.orafaq.com ---------------------------------------------------------------- To unsubscribe send email to: oracle-l-request_at_freelists.org put 'unsubscribe' in the subject line. -- Archives are at http://www.freelists.org/archives/oracle-l/ FAQ is at http://www.freelists.org/help/fom-serve/cache/1.html -----------------------------------------------------------------Received on Wed May 12 2004 - 18:43:28 CDT
![]() |
![]() |