如何在登录触发器中获得当前会话的id?
使用UserEnv('SESSIONID')出错,
如果采用Dbms_session.UNIQUE_SESSION_ID获得唯一序号,可如何和v$session中的当前会话记录对应起来,获得连接客户端的信息。

解决方案 »

  1.   

    访问,
      select username,status,sid,serial# from v$session where username=:user_name;
    ,获得连接客户端的信息。
      

  2.   

    select username,status,sid,serial# from v$session where username=:user_name;
    where条件还可以加上machine,program等
      

  3.   

    登陆出发器中,访问V$session表,不能获得当前会话的记录,并且还不能确定客户端的machine,program。谢谢关注 ,参与 :)
      

  4.   

    在oracle 8.1.x中可以用这个:
    SELECT machine, SYS_CONTEXT ('USERENV', 'IP_ADDRESS'), osuser,
              SYS_CONTEXT ('USERENV', 'SESSION_USER'), program, TO_CHAR (audsid)
        FROM v$session
        WHERE audsid = USERENV ('SESSIONID');
      

  5.   

    create table login_log -- 登入登出信息表
    (
        session_id int not null, -- sessionid
        login_on_time  date, -- 登入時間
        login_off_time  date, -- 登出時間
        user_in_db varchar2(30), -- 登入的db user
        machine    varchar2(20),    -- 機器名
        ip_address varchar2(20), -- ip地址
        run_program varchar2(20)    -- 以何程序登入
    );create or replace trigger login_on_info -- 紀錄登入信息的觸發器
    after logon on database 
    Begin 
        insert into login_log(session_id,login_on_time,login_off_time,user_in_db,machine,ip_address,run_program)
        select AUDSID,sysdate,null,sys.login_user,machine,SYS_CONTEXT('USERENV','IP_ADDRESS'),program
        from v$session where AUDSID = USERENV('SESSIONID');  --當前SESSION
    END;
      

  6.   

    id:
      select user from dual;
      

  7.   

    select distinct sid from v$mystat;
      

  8.   

    如何在登录触发器中获得当前会话的id???1.登录触发器中使用UserEnv('SESSIONID')出错
    2.登录触发器中不能使用v$session,v$mystat,(用户甚至有dba权限阿)
    3.只有当前用户名是不够的,因为同一个用户可能同时又多个连接。
    4.如果采用Dbms_session.UNIQUE_SESSION_ID获得唯一序号,可如何和v$session中的当前会话记录对应起来,获得连接客户端的信息。其实我的目的是,相为当前回话获得一个唯一标示,和当前连接客户端的信息,以便在以后的操作中使用。
    谢谢各位关注 :)