Obtener usuario de red desde procedure

Hola.
Tengo un problema con un procedimiento. Estoy intentando saber qué usuario de red es el que está realizando una determinada operación sobre unas cuantas tablas.
Para ello me había creado un procedimiento con lo siguiente (estaba preparado para que se ejecutara desde un trigger en esas tablas):
select object_id into var from dba_objects
where object_type = 'TABLE'
and OBJECT_NAME = 'NOMBREDETABLA';
select os_user_name
into v_id_usuario
from v$locked_object
where object_id = var;
Si ejecuto esto desde un declare, no tengo ningún problema, pero en el momento que lo meto dentro de un procedimiento, me da error de tabla no encontrada (v$locked_object). Hasta donde alcanzo a entender, es que no tengo permisos para poder ejecutar desde procedure una select para esta vista (pertenece al esquema SYS) y no tengo posibilidad de darle permisos.
¿Hay alguna alternativa que me permita obtener esta información con cualquier otra tabla de las que pueda tener permisos?
Un saludo

1 Respuesta

Respuesta
1
Create un procedimiento o función en sys, que te devuelva el usuario y create un sinónimo y dale permisos de ejecución para el usuario donde estas creando. Y así desde el trigger llama al proc/funcion.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas