Alguma vez já precisou matar uma sessão do banco diretamente no sistema operacional? Acredito que a maior parte das respostas é sim e este processo é bastante comum.
O processo em ambiente linux/unix é bastante simples através do kill -9. Mas e no windows como posso fazer esse processo???
Você pode estar pensando em utilizar o gerenciador de tarefas, porém.. Via gerenciador de tarefas, não é possível identificar a sessão uma vez que todas ficam agrupadas no executável "oracle.exe".
Saiba que para o sistema operacional windows a Oracle disponibiliza o utilitário orakill, que permite "matar" uma sessão diretamente do prompt DOS, sem a necessidade de uma conexão direta com o banco de dados.
O orakill é bastante simples de ser utilizado
1. The alter system statement will not clear any locks that exist. Instead, the session will remain connected until it times out, then the session is killed and the locks are released. The orakillcommand will kill the thread and the locks instantly. (Check out the comments of Yasin about this case )
2. A DBA may be unable to gain access to a SQL prompt due to a runaway query consuming all database resources. In this case, the session can be killed without ever logging in to the database.
O processo em ambiente linux/unix é bastante simples através do kill -9. Mas e no windows como posso fazer esse processo???
Você pode estar pensando em utilizar o gerenciador de tarefas, porém.. Via gerenciador de tarefas, não é possível identificar a sessão uma vez que todas ficam agrupadas no executável "oracle.exe".
Saiba que para o sistema operacional windows a Oracle disponibiliza o utilitário orakill, que permite "matar" uma sessão diretamente do prompt DOS, sem a necessidade de uma conexão direta com o banco de dados.
O orakill é bastante simples de ser utilizado
C:\oracle9i\bin>orakill Usage: orakill sid thread where sid = the Oracle instance to target thread = the thread id of the thread to kill The thread id should be retrieved from the spid column of a query such as:
select spid, osuser, s.program from v$process p, v$session s where p.addr=s.paddr
Usando a query acima é abaixo pegar o SPID da sessão e então "mata-la" através do comando orakill.
SELECT p.SPID, s.OSUSER, s.PROGRAM FROM V$PROCESS p JOIN V$SESSION s ON p.ADDR= s.PADDR WHERE s.USERNAME IS NOT NULL; SPID OSUSER PROGRAM ----- -------------------- ------------- 1328 LAMIM\teste sqlplus.exe 1788 LAMIM\teste sqlplus.exe 2008 LAMIM\teste sqlplusw.exe 2228 LAMIM\teste sqlplusw.exe
Consulta via prompt
Agora ao se perguntar o porque de "matar" a sessão pelo SO, segue o motivo em ingles:SELECT p.SPID, s.OSUSER, s.PROGRAM FROM V$PROCESS p JOIN V$SESSION s ON p.ADDR= s.PADDR WHERE s.USERNAME IS NOT NULL; SPID OSUSER PROGRAM ----- -------------------- ------------- 1788 LAMIM\teste sqlplus.exe 2008 LAMIM\teste sqlplusw.exe 2228 LAMIM\teste sqlplusw.exe
1. The alter system statement will not clear any locks that exist. Instead, the session will remain connected until it times out, then the session is killed and the locks are released. The orakillcommand will kill the thread and the locks instantly. (Check out the comments of Yasin about this case )
2. A DBA may be unable to gain access to a SQL prompt due to a runaway query consuming all database resources. In this case, the session can be killed without ever logging in to the database.
Comentários
Postar um comentário