[DUDA]PL/SQL en v$session

<< < (2/3) > >>

-Ramc-:
Sí, eso fue lo que hice para obtener los usuarios conectados, pero, no hay una que diga AFTER COMMAND EXECUTE ON DATABASE o sí??  :huh:

^Tifa^:
No puedo afirmartelo lo siento.

Pero porque no creas una vista copia de v$session solo con los campos que deseas obtener ver? y dicha vista otorgale permisos a X usuario para que este usuario cree un procedimiento almacenado (si es requerido) para ver dichos datos llamando los campos de esa vista nueva?

^Tifa^:
De hecho hice una mini-prueba en mi Oracle   :-*

Código
 
SQL> CREATE VIEW ejemplo AS SELECT command, USER#, username, STATUS, logon_time FROM v$session;
 
VIEW created.
 
SQL> SELECT * FROM ejemplo;
 
  COMMAND      USER# USERNAME                       STATUS   LOGON_TIM
---------- ---------- ------------------------------ -------- ---------
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        3          0 SYS                            ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
 
  COMMAND      USER# USERNAME                       STATUS   LOGON_TIM
---------- ---------- ------------------------------ -------- ---------
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
 
18 ROWS selected.
 
SQL> CREATE USER pepe IDENTIFIED BY pepe;
 
USER created.
 
SQL> GRANT CONNECT, resource TO pepe;
 
GRANT succeeded.
 
SQL> GRANT SELECT, INSERT, UPDATE ON SYS.EJEMPLO TO pepe;
 
GRANT succeeded.
 
SQL> exit
 
oracle@marian:~$ sqlplus pepe/pepe                                                    
 
SQL*Plus: Release 10.2.0.1.0 - Production ON Thu Nov 5 15:39:45 2009
 
Copyright (c) 1982, 2005, Oracle.  ALL rights reserved.
 
 
Connected TO:
Oracle DATABASE 10g Enterprise Edition Release 10.2.0.1.0 - Production
WITH the Partitioning, OLAP AND DATA Mining options                  
 
SQL> SELECT * FROM SYS.EJEMPLO;
 
  COMMAND      USER# USERNAME                       STATUS   LOGON_TIM
---------- ---------- ------------------------------ -------- ---------
        0          0                                ACTIVE   05-NOV-09
        3         60 PEPE                           ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        3          0 SYS                            ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
 
  COMMAND      USER# USERNAME                       STATUS   LOGON_TIM
---------- ---------- ------------------------------ -------- ---------
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
        0          0                                ACTIVE   05-NOV-09
 
19 ROWS selected.
 
 
 
 

Te podria servir... nunca se sabe  :P

-Ramc-:
Cita de: ^TiFa^ en  5 Noviembre 2009, 20:16 pm

No puedo afirmartelo lo siento.

Pero porque no creas una vista copia de v$session solo con los campos que deseas obtener ver? y dicha vista otorgale permisos a X usuario para que este usuario cree un procedimiento almacenado (si es requerido) para ver dichos datos llamando los campos de esa vista nueva?

Pero, si creo una vista copia, es lo mismo que con la vista original, no puedo crearle trigger, así que tendría que sacarle los datos, guardarlos en mi tabla y consultarlos como haría con v$session la original.

O sea, necesito sacar el campo command cada vez que se modifique y guardarlo en otra tabla con la fecha actual y el usuario que lo hizo, pero, no puedo ponerle el trigger a v$session, ni a la vista creada de el.  :-\

EDIT: El error al intentar poner el trigger es:
Citar

Error report:
ORA-02030: can only select from fixed tables/views
02030. 00000 -  "can only select from fixed tables/views"
*Cause:    An attempt is being made to perform an operation other than
           a retrieval from a fixed table/view.
*Action:   You may only select rows from fixed tables/views.

^Tifa^:
Hasta lo poco que me concierne, no es posible crear triggers en vistas  del esquema SYS  ;) sugeri la creacion de una copia a v$session por si ibas a trabajar sobre otro usuario y no SYSTEM. Tambien recuerda que las vistas reflejan todo en tiempo real, no es una tabla estatica que no se actualiza al menos que intervenga manos humanas.

Podrias crear tu evento con DBMS_SCHEDULER que se reproduzca cada 60 segundos (1 minuto) y llame los datos en ese tiempo y te vaya haciendo un log spool en un archivo fisico, o en una tabla o donde gustes de todo lo que ocurra cada 60 segundos sobre los campos que te interesan de v$session. (Pero esto no seria en tiempo real) sino cada 60 segundos.


Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior