Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Como obtener el SID y SERIAL# desde el SP actual

Estas en el tema de Como obtener el SID y SERIAL# desde el SP actual en el foro de Oracle en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 13/06/2007, 16:47
 
Fecha de Ingreso: junio-2007
Mensajes: 2
Antigüedad: 16 años, 10 meses
Puntos: 0
Mensaje 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.
  #2 (permalink)  
Antiguo 14/06/2007, 01:45
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
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.
  #3 (permalink)  
Antiguo 14/06/2007, 09:14
 
Fecha de Ingreso: junio-2007
Mensajes: 2
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Como obtener el SID y SERIAL# desde el SP actual

Cita:
Iniciado por jc3000 Ver Mensaje
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.
  #4 (permalink)  
Antiguo 14/06/2007, 15:03
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 1 mes
Puntos: 7
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
__________________
Blogzote.com :-) Mi blog
  #5 (permalink)  
Antiguo 15/06/2007, 01:33
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




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