Kbase P80233: Does killing agents from task manager release all the resources on Oracle backend?
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  5/9/2006 |
|
Status: Unverified
GOAL:
Does killing agents from task manager release all the resources on Oracle backend?
GOAL:
Will killing webspeed agents affect resources on Oracle when using Oracle data server?
FACT(s) (Environment):
Progress 9.x
WebSpeed 3.x
Oracle
Oracle DataServer
FIX:
There is no definite answer to the question since there are still unknowns.
1. How does webspeed connect to Oracle? Does it use a Oracle broker (orasrv) or
does it connect directly to Oracle client?
This is important since by connecting to a broker, webspeed becomes a client, if
a client is killed, the server will have no knowledge of the client's
disappearance, so the server (orasrv) will probably will keep processing the
request until later one tcp/ip keepalive kicks in or when it's ready to send the
client back the results.
If webspeed does not go through a broker, then it is both a server and a client,
when it is killed, any resource being held for the process itself will likely to
be released , but this does not mean the resource held on the oracle backend
will be released. This brings to another question:
2. Does Oracle dataserver go through Net 8 to connect to Oracle instance or does
it directly connect to Oracle locally?
Understand oracle dataserver is an Oracle OCI client, the interaction of a
remote client with a server and a local client with a server will probably be
different. But this is more of a question we should get answers from oracle:
If I kill a remote OCI client, will the resource on the server be released?
If I kill a local OCI client, will the resource on the server be released?
Following is gathered from some research at Oracle's website:
"The report job submitted from the client machine can not be killed by just
closing the client session. The job will be running at the backend and hence the
resource consumption. In fact users should not attempt to close the client
sessions, thinking that they are hung. If you really need to terminate a
session, you need to identify the session and then kill it at the backend, using
alter system kill session ... statement.
When a client session submits a request to the server, the client will be
waiting for a response from the server. When the server finishes the client's
request, it will send the response back to the client. In the mean time, if the
client session is closed, the server cannot identify the client to send the
response to. This might result in core dumps and some internal errors also.
Check for errors in alert_sid.log for any such errors. Educate the users and
tell them not to close the sessions"
Note client here is equvalent to dataserver...
Following utility that might be useful (again this is only useful when your instance and webspeed are on the same windows machine) :
You have an Oracle process that is using a lot of Windows NT resources and you
want to determine if a user session is causing it. If it is a user session,
you want to kill the corresponding user thread without crashing the instance.
This is useful for DBAs who want to avoid shutting down the entire instance
because of a single errant user session.
Windows NT is a thread-based operating system (OS) rather than a process-based
OS like UNIX. The Oracle background processes and user sessions are threads
within the ORACLE.EXE process running in Windows NT. Since you don't have
multiple processes, but one process with multiple threads, killing the
ORACLE.EXE process (using NT Task Manager, for example) would crash the entire
instance.
Since Windows NT does not provide a tool to kill individual threads, Oracle
ships the ORAKILL utility with RDBMS versions 7.3.3.6 & up. This utility has
the same effect of a KILL -9 command for killing a shadow process or background process in UNIX.
ORAKILL is run from the Command Prompt in the following syntax:
C:> orakill sid thread
where: sid is the Oracle instance to target
thread is the thread id of the thread to kill
Note: You can display the syntax of most Oracle executables by typing the
executable name. at the command prompt with no options..