针对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?如果是,那么其中的记录信息是长时间,跨登录积累的?还是怎么样的?