那位大侠告诉我一下,如何查看oracle登陆的ip地址,以及运行的脚本

解决方案 »

  1.   

    select * from v$session;
    从这个表里找找看,有没有你要的信息?运行的脚本在v$sql, v$sql_area之类的动态视图中,与v$session关联可以查出来
      

  2.   

    select SYS_CONTEXT('USERENV','IP_ADDRESS') ip_address
      from dual;可以查看当前session的IP
      

  3.   

    select x.MACHINE, x.TERMINAL, x.PROGRAM
      from v$session x;可以看到机器名,但是ip 我没找到对应的字段
      

  4.   

    IP就不清楚了,v$sesssion有机器名等信息了
      

  5.   

    直接查好象比较困难.
    试试用触发器去记录IP地址:create table log(ip varchar2(20),user varchar2(20),time date,what varchar2(200));CREATE OR REPLACE TRIGGER TRI_TRACE
      BEFORE INSERT OR DELETE OR UPDATE ON XXTABLE
      FOR EACH ROW
    DECLARE
      PRAGMA AUTONOMOUS_TRANSACTION;
    BEGIN
      IF UPDATING THEN
        INSERT INTO LOG
        VALUES
          (SYS_CONTEXT('userenv', 'ip_address'),
           SYS_CONTEXT('USERENV', 'SESSION_USER'),
           SYSDATE,
           'update xxtable,xxtable pk is ');
      ELSIF INSERTING THEN
        INSERT INTO LOG
        VALUES
          (SYS_CONTEXT('userenv', 'ip_address'),
           SYS_CONTEXT('USERENV', 'SESSION_USER'),
           SYSDATE,
           'insert xxtable,xxtable pk is ');
      ELSIF DELETING THEN
        INSERT INTO LOG
        VALUES
          (SYS_CONTEXT('userenv', 'ip_address'),
           SYS_CONTEXT('USERENV', 'SESSION_USER'),
           SYSDATE,
           'delete xxtable,xxtable pk is ');
      END IF;
      COMMIT;
    EXCEPTION
      WHERE OTHERS THEN
      NULL;
    END;
    /
      

  6.   

    记得在eygle的blog上有完美的解决办法,
    可恨公司竟然把这个blog给封了