关于session的奇怪问题,望高人指点!

[复制链接]
查看11 | 回复7 | 2012-1-4 11:50:44 | 显示全部楼层 |阅读模式
针对logoff事件写了个tirgger,从v$sesstat中采集用户的信息,并存于表A中。发现一个问题:
用户hr通过pl/sql Developer登陆,但这时就能在表A中发现插入了新信息,用户为hr,sid为23,并且logon与logoff时间相差1秒。可是此时查看v$session,只有一个hr的session,sid为22且为main session。
若用户hr退出,最后在表A中可以看到,sid为22与23的两个session的logon时间是一样的,logoff时间不一样;但记录的信息在关键点上出入可能很大,如cpu used by this session这一项,sid为22的值可能是0或者很小的正数,sid为23的却是40多。
那个sid=23的session怎么会出现的?我的trigger只是针对logoff的呀。还有,经试验,这种“不存在的”session只会在用户登陆main session时出现,而再开其他窗口进行dml时不会出现。
难道用户登录启动main session之前,Oracle会瞬间启动而又关闭一个session?如果是,那么其中的记录信息是长时间,跨登录积累的?还是怎么样的?
回复

使用道具 举报

千问 | 2012-1-4 11:50:44 | 显示全部楼层
您换sqlplus试试吧
回复

使用道具 举报

千问 | 2012-1-4 11:50:44 | 显示全部楼层
最初由 oracledba 发布
[B]您换sqlplus试试吧 [/B]

谢谢!
sqlplus登录时,倒是只启动一个session。
如果所有终端用户都是用同一种方式登录问题就好解决了。
怎样才能准确地抓住即将关闭的那个session,而且就只是这一个session,而不包括同一用户开启的,非即将关闭发的session??
回复

使用道具 举报

千问 | 2012-1-4 11:50:44 | 显示全部楼层
plsql/d 里可以限制只用一个会话登录
而且您可以参考一下create profile,看看能不能满足您的要求
回复

使用道具 举报

千问 | 2012-1-4 11:50:44 | 显示全部楼层
plsql dev登录的时候使用一个全局session.
再登录command line或者别的什么可能会再次打开一个session^_^
回复

使用道具 举报

千问 | 2012-1-4 11:50:44 | 显示全部楼层
最初由 w3h3f 发布
[B]
谢谢!
sqlplus登录时,倒是只启动一个session。
如果所有终端用户都是用同一种方式登录问题就好解决了。
怎样才能准确地抓住即将关闭的那个session,而且就只是这一个session,而不包括同一用户开启的,非即将关闭发的session?? [/B]

这个问题我以前做这触发器的时候思考过。
这样解决,使用AUDSID 来创建关系。
连接上来的时候,捕捉到AUDSID,关闭是根据SUDSID
去创建关联。AUDSID是唯一的。
回复

使用道具 举报

千问 | 2012-1-4 11:50:44 | 显示全部楼层
这样记录下来有用吗?
我还是用AnySQL的show stats命令算了
回复

使用道具 举报

千问 | 2012-1-4 11:50:44 | 显示全部楼层
当然有用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行