从oracle临时表理解会话与链接
用oracle时间比较长了,但只是单纯的使用,很少关心一些基本的东西,比如oracle中会话和链接的区别,我懒得看一大堆的介绍,只是看了oracle临时表的用法,实际测试了一下,之后才明白了这二者的区别,我想用这种方法理解这两者的区别比看N篇介绍更加印象深刻。
这里先不说会话和链接的区别和关系,首先看看oracle的会话级临时表,会话级临时表有这样的特性:当你当前SESSION 不退出的时候,临时表中的数据是存在的,而当你退出当前SESSION 之后,临时表中的数据就全部被清空了,换句话说,如果你不退出当前SESSION(这里简称 session a)而是用另一个SESSION(这里简称 session b)登录,是看不到session a中插入到临时表中的数据的,如果session a不退出,它里面建立的临时表的数据就会一直存在,直到它退出会话才被清除。
一个简单的例子即可印证,在这个例子中清楚的体现了链接和会话的关系和区别。
我们用sys用户登录并记录下当前有哪些会话,我使用的是plsqldev这种数据库工具,显示查询结果比较美观,方便
在plsqldev中打开一个命令窗口执行:
select sid,logon_time,username,machine from v$session order by logon_time
得到的结果是:
SQL> select sid,to_char(logon_time,'yyyy-mm-dd hh24:mi:ss'),username,machine from v$session order by logon_time desc;
;
SID TO_CHAR(LOGON_TIME,'YYYY-MM-DD USERNAME MACHINE
---------- ------------------------------ ------------------------------ ----------------------------
316 2011-03-10 00:56:37 6AA448B035B94BC
308 2011-03-10 00:56:22 SYS WORKGROUP\6AA448B035B94BC
317 2011-03-10 00:56:09 SYS WORKGROUP\6AA448B035B94BC
303 2011-03-09 21:32:50 DBSNMP WORKGROUP\6AA448B035B94BC
297 2011-03-09 21:31:59 6AA448B035B94BC
301 2011-03-09 21:31:51 SYSMAN 6AA448B035B94BC
298 2011-03-09 21:31:51 SYSMAN 6AA448B035B94BC
313 2011-03-09 21:31:50 6AA448B035B94BC
306 2011-03-09 21:31:50 SYSMAN 6AA448B