Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Oracle (http://www.forosdelweb.com/f100/)
-   -   Como obtener el SID y SERIAL# desde el SP actual (http://www.forosdelweb.com/f100/como-obtener-sid-serial-desde-sp-actual-497752/)

take_ls 13/06/2007 16:47

Como obtener el SID y SERIAL# desde el SP actual
 
En Oracle, cuando ejecuto un SP necesito saber cual es su SID y Serial# pero desde dentro de ese SP, estos valores los utilizo para saber cual es el proceso que debo matar (kill) durante la ejecución de SP (es una carga de datos masiva), mediante un botón "cancelar Proceso" en una aplicacion web.

por ejemplo en sqlserver existe el comando @@spid, que lo puedo llamar dentro de un SP y saber cual es su spid (process id).

Espero sus comentarios.
Gracias.

jc3000 14/06/2007 01:45

Re: Como obtener el SID y SERIAL# desde el SP actual
 
Pues basicamente debes hacer una join entre V$SESSION y V$PROCESS.

De V$SESSION vas a sacar el SID y el SERIAL#, para hacer el Kill Session y de V$PROCESS sacas el SPID, para hacer el KILL -9 si lo necesitas

La join sería esta :

V$PROCESS.addr(+) = V$SESSION.paddr

Si tienes mas dudas pregunta.

take_ls 14/06/2007 09:14

Re: Como obtener el SID y SERIAL# desde el SP actual
 
Cita:

Iniciado por jc3000 (Mensaje 2036247)
Pues basicamente debes hacer una join entre V$SESSION y V$PROCESS.

De V$SESSION vas a sacar el SID y el SERIAL#, para hacer el Kill Session y de V$PROCESS sacas el SPID, para hacer el KILL -9 si lo necesitas

La join sería esta :

V$PROCESS.addr(+) = V$SESSION.paddr

Si tienes mas dudas pregunta.


Ok ya obtuve los valores que necesito para matar el proceso SID y SERIAL con esto:

SELECT sid,serial# FROM v$session WHERE audsid = USERENV('sessionid');

otra variante seria:
SELECT sid,serial# FROM sys.v_$session WHERE audsid = USERENV('sessionid');

El problema ahora es que al implementarlo dentro del SP me lanza el error:

PL/SQL: ORA-00942: table or view does not exist

Será alguna restricción de permisos del usuario??? y que por ello no logra ver la vista o la tabla ? como podría solucionarlo, yo no soy el DBA.

Grax.

kikolice 14/06/2007 15:03

Re: Como obtener el SID y SERIAL# desde el SP actual
 
pues es eso, el usuario que estas usando no tiene privilegios para ver v_$session, necesita los privilegios o necesita el sinonimo, si solo fuera sinonimo usando sys. deberia de funcionar

jc3000 15/06/2007 01:33

Re: Como obtener el SID y SERIAL# desde el SP actual
 
Cierto.
Las vistas del diccionario de datos solo pueden verlas los usuarios DBA's o un usuario normal al que se le otorguen permisos de select sobre esas vistas.

De todas maneras si solo te da permisos de select sobre las vistas, no vas a poder hacer nada ya que el KILL SESSION solo lo pueden hacer los DBA's


La zona horaria es GMT -6. Ahora son las 00:40.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.