Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > Oracle

Respuesta
 
Herramientas Desplegado
Antiguo 13-jun-2007, 16:47   #1 (permalink)
take_ls ha deshabilitado el karma
 
Fecha de Ingreso: junio-2007
Mensajes: 2
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.
take_ls está desconectado   Responder Citando
Antiguo 14-jun-2007, 01:45   #2 (permalink)
jc3000 ha deshabilitado el karma
 
Fecha de Ingreso: junio-2007
Mensajes: 278
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.
jc3000 está desconectado   Responder Citando
Antiguo 14-jun-2007, 09:14   #3 (permalink)
take_ls ha deshabilitado el karma
 
Fecha de Ingreso: junio-2007
Mensajes: 2
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.
take_ls está desconectado   Responder Citando
Antiguo 14-jun-2007, 15:03   #4 (permalink)
kikolice ha deshabilitado el karma
 
Avatar de kikolice
 
Fecha de Ingreso: marzo-2004
Mensajes: 1.118
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
kikolice está desconectado   Responder Citando
Antiguo 15-jun-2007, 01:33   #5 (permalink)
jc3000 ha deshabilitado el karma
 
Fecha de Ingreso: junio-2007
Mensajes: 278
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
jc3000 está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 10:24.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93