如何在登录触发器中获得当前会话的id 如何在登录触发器中获得当前会话的id?使用UserEnv('SESSIONID')出错,如果采用Dbms_session.UNIQUE_SESSION_ID获得唯一序号,可如何和v$session中的当前会话记录对应起来,获得连接客户端的信息。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 访问, select username,status,sid,serial# from v$session where username=:user_name;,获得连接客户端的信息。 select username,status,sid,serial# from v$session where username=:user_name;where条件还可以加上machine,program等 登陆出发器中,访问V$session表,不能获得当前会话的记录,并且还不能确定客户端的machine,program。谢谢关注 ,参与 :) 在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'); 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'); --當前SESSIONEND; id: select user from dual; select distinct sid from v$mystat; 如何在登录触发器中获得当前会话的id???1.登录触发器中使用UserEnv('SESSIONID')出错2.登录触发器中不能使用v$session,v$mystat,(用户甚至有dba权限阿)3.只有当前用户名是不够的,因为同一个用户可能同时又多个连接。4.如果采用Dbms_session.UNIQUE_SESSION_ID获得唯一序号,可如何和v$session中的当前会话记录对应起来,获得连接客户端的信息。其实我的目的是,相为当前回话获得一个唯一标示,和当前连接客户端的信息,以便在以后的操作中使用。谢谢各位关注 :) 效率,SQL语句求教 这样的遍历怎么写?高手帮忙 ORA-24374 ,怎么解决呢? 学习ORACLE 10g 最好买什么书? 过程中的,请问这中间的%是什么意思? 请教这两条sql语句的具体含义(聊天室)是什末?请联合上下文?来者有分 一个插入过程中的异常问题,急求解决方案! recover问题,急阿 触发器的一个问题 ORACLE profile 救命啊 如何对嵌套表生成视图,使其成为一个二维的包含表所有信息的视图!??? 高分求教:oracle9i查询很慢,请高手指教是什么原因,如何进行优化设置?
select username,status,sid,serial# from v$session where username=:user_name;
,获得连接客户端的信息。
where条件还可以加上machine,program等
SELECT machine, SYS_CONTEXT ('USERENV', 'IP_ADDRESS'), osuser,
SYS_CONTEXT ('USERENV', 'SESSION_USER'), program, TO_CHAR (audsid)
FROM v$session
WHERE audsid = USERENV ('SESSIONID');
(
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;
select user from dual;
2.登录触发器中不能使用v$session,v$mystat,(用户甚至有dba权限阿)
3.只有当前用户名是不够的,因为同一个用户可能同时又多个连接。
4.如果采用Dbms_session.UNIQUE_SESSION_ID获得唯一序号,可如何和v$session中的当前会话记录对应起来,获得连接客户端的信息。其实我的目的是,相为当前回话获得一个唯一标示,和当前连接客户端的信息,以便在以后的操作中使用。
谢谢各位关注 :)