日期:2014-05-16  浏览次数:20415 次

从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