如何在登录触发器中获得当前会话的id

SDT 2003-08-21 11:56:31
如何在登录触发器中获得当前会话的id?
使用UserEnv('SESSIONID')出错,
如果采用Dbms_session.UNIQUE_SESSION_ID获得唯一序号,可如何和v$session中的当前会话记录对应起来,获得连接客户端的信息。
...全文
161 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
SDT 2003-09-15
  • 打赏
  • 举报
回复
如何在登录触发器中获得当前会话的id???

1.登录触发器中使用UserEnv('SESSIONID')出错
2.登录触发器中不能使用v$session,v$mystat,(用户甚至有dba权限阿)
3.只有当前用户名是不够的,因为同一个用户可能同时又多个连接。
4.如果采用Dbms_session.UNIQUE_SESSION_ID获得唯一序号,可如何和v$session中的当前会话记录对应起来,获得连接客户端的信息。

其实我的目的是,相为当前回话获得一个唯一标示,和当前连接客户端的信息,以便在以后的操作中使用。
谢谢各位关注 :)

hrb_qiuyb 2003-09-14
  • 打赏
  • 举报
回复
select distinct sid from v$mystat;
aegir 2003-09-14
  • 打赏
  • 举报
回复
id:
select user from dual;
beckhambobo 2003-09-10
  • 打赏
  • 举报
回复
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;
SDT 2003-09-09
  • 打赏
  • 举报
回复
登陆出发器中,访问V$session表,不能获得当前会话的记录,并且还不能确定客户端的machine,program。

谢谢关注 ,参与 :)
armu80830 2003-09-09
  • 打赏
  • 举报
回复
在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');
klbt 2003-08-23
  • 打赏
  • 举报
回复
学习。
hdkkk 2003-08-21
  • 打赏
  • 举报
回复
select username,status,sid,serial# from v$session where username=:user_name;
where条件还可以加上machine,program等
SDT 2003-08-21
  • 打赏
  • 举报
回复
这样其实获得的是当前所有以此用户登录的会话,不准确。
除非同时只有一个此用户的连接会话。
LGQDUCKY 2003-08-21
  • 打赏
  • 举报
回复
访问,
select username,status,sid,serial# from v$session where username=:user_name;
,获得连接客户端的信息。

3,492

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧