首先使用PL/SQL连接登录到数据库(测试帐号为:SCOTT)
然后查询当前会话状态
--先使用SYS帐号赋V$SESSON视图的查询权限给SCOTT
grant select on v_$session to scott
--然后用SCOTT帐号使用PLSQL登录查询当前会话状态(只开了一个SQLWindow)
SELECT sid,username,status,machine,port,program,ACTION
FROM V$SESSION where username='SCOTT';
1 125 SCOTT INACTIVE WORKGROUP\WinXP-904 2139 plsqldev.exe Main session
2 138 SCOTT ACTIVE WORKGROUP\WinXP-904 2144 plsqldev.exe SQL Window - 20121026.sql
从上面可以看到PL/SQL一开始就会有2个会话(SID)存在,一个为主会话(Main session),另一个则为当前活动会话(SQL window).
此时我们再开一个SQL Window进行一个简单的查询(如不在该新窗口执行查询,有时候不会新增会话)
select select * from emp;
之后再次利用上面的SQL查询会话状态,结果如下:
SELECT sid,username,status,machine,port,program,ACTION
FROM V$SESSION where username='SCOTT';
1 125 SCOTT INACTIVE WORKGROUP\WinXP-904 2139 plsqldev.exe Main session
2 133 SCOTT INACTIVE WORKGROUP\WinXP-904 2192 plsqldev.exe SQL Window - New
3 138 SCOTT ACTIVE WORKGROUP\WinXP-904 2144 plsqldev.exe SQL Window - 20121026.sql
可以看见新增了一个SID(133),由于我切换到20121026这个窗口查询的会话状态,所以新增的133会话状态为INACTIVE.
--
结论:PL/SQL中新增窗口会重新打开一个会话.
注意:PL/SQL有针对性的设置,此验证是在默认情况下进行验证的.如需要改变这种新增窗口新增会话的情况,需在PL/SQL的设置里--connection里--Session Mode进行修改.