`
hougbin
  • 浏览: 491994 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

oracle 临时表

阅读更多

1 定义

 

  临时表(Temporary table)用于保存事务或会话期间的中间结果集。临时表中保存的数据只对当前会话可见,所有会话都看不到其他会话的数据;临时表比常规表生成的redo少得多。不过,由于临时表必须为其中包含 的数据生成undo信息, 所以也会生成一定的redo UPDATEDELETE会生成最多的undo INSERTSELECT生成的undo最少。

 

2 创建临时表分类

   创建Oracle临时表,可以有两种类型的临时表:会话级的临时表和事务级的临时表

  会话级: on Commit Preserve Rows

  事务级: on Commit delete Rows

 

3 创建例子

  3.1 会话级临时表

create global temporary table Student( 
Stu_id Number(5),
 Class_id Number(5), 
Stu_Name Varchar2(8), 
Stu_Memo varchar2(200)) 
on Commit Preserve Rows ; 

 

 

 

  3.2 事务级临时表

    

create global temporary table Classes(
Class_id Number(5),
Class_Name Varchar2(8),
Class_Memo varchar2(200)) 
on Commit delete Rows;

 

 

 4 具体说明

 

 

    4.1 会话级

        当插入数据(无论是否进行commit),只有当前session可以查看到数据,其它会话不可见

    4.2 事务级

        当插入数据,不进行commit操作,只有当前session可以查看到数据,其它会话不可见。当commit后,执行插入的session也查询不到插入的数据,rollback操作,同样也会导致本session查看不到数据

 

 5  临时表的应用
    (1)、当某一个SQL语句关联的表在2张及以上,并且和一些小表关联。可以采用将大表进行分拆并且得到比较小的结果集合存放在临时表中。
     (2)、程序执行过程中可能需要存放一些临时的数据,这些数据在整个程序的会话过程中都需要用的等等。


 6、注意事项:
   (1)、临时表的索引以及对表的修改、删除等和正常的表是一致的。
   (2)、Oracle的临时表是Oracle8i才支持的功能特性,如果你的Oracle版本比较低的话,那么就可能没有办法用到了,如果你的Oracle版本是8i的话,你还需要把$ORACLE_HOME/admin/${ORACLE_SID}/pfile目录下的init<ORACLE_SID>.ora初始参数配置文件的compatible修改为compatible = "8.1.0",我的服务器上就是这样子配置的。当然也可以修改为compatible = "8.1.6"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics