ITPub博客

首页 > 数据库 > Oracle > 临时表大总结

临时表大总结

原创 Oracle 作者:lusklusklusk 时间:2016-01-19 16:04:49 0 删除 编辑

1.       Oracle的临时表就是全局临时表,语法中必须加上GLOBAL,否则会报错,这点和sqlserver不一样,sqlserver存在什么临时表、全局临时表两种概念

2.       表的定义对所有的会话可见。数据只在产生transactionsession的当前会话中有效

3.       可以对临时表创建索引,视图,触发器

4.       可以用exportimport工具导入导出表的定义,但是不能导出数据。

5.       建立在临时表上的索引也是临时的,也是只对当前会话或者事务有效. 尽管对临时表的DML操作速度比较快,但同样也是要产生 Redo Log
LogMiner does not generate SQL redo for temporary tables. In such a case,
this column(V$LOGMNR_CONTENTS.SQL_REDO) will contain the string "/* No SQL_REDO for temporary tables */".
LogMiner does not generate SQL undo for temporary tables. In such a
case, this column(V$LOGMNR_CONTENTS.SQL_UNDO) will contain the string "/* No SQL_UNDO for temporary tables */".

6.       临时表不存在并发,就不存在锁,每个人看到的都是自己的东西 。临时表的数据只在一个transactionsession中有效,没有锁的概念

7.       一个用户的临时表就放在当前用户的临时表空间中,创建临时表后并不产生任何segments分配,与普通表不同dba_tables中看到临时表对应的tablespace_name为空

8.       不管是事务级还是会话级,临时表的结构以及元数据还存储在用户的数据字典中。如果临时表完成它的使命后,最好删除临时表,否则数据库会残留很多临时表的表结构和元数据。

 

 

 

例子:

SYSTEM.TEMP_TAB1事务级的临时表

SYSTEM自己插入1条数据后不commitSYSTEM自己SELECT该表,发现有1条数据,SYS用户可以SELECT到该表但是没有数据。

commit后,SYSTEM自己SELECT该表也没有数据了,SYS用户可以SELECT到该表但是没有数据

 

SYSTEM.TEMP_TAB2会话级的临时表

SYSTEM自己插入1条数据后不commitSYSTEM自己SELECT该表,发现有1条数据,SYS用户可以SELECT到该表但是没有数据。

commit后,SYSTEM自己SELECT该表,发现有1条数据,SYS用户可以SELECT到该表但是没有数据。使用SYSTEM用户重新开启一个会话SELECT该表发现没有数据了。退出可以SELECT到数据的当前SYSTEM用户再重新进去SELECT后发现改表没有数据了

 

SYSTEM.TEMP_TAB2会话级的临时表

SYS用户插入1条数据后不commitSYSTEM自己SELECT该表,发现没有数据,SYS用户可以SELECT到该表有1条数据。

 

 

事务级临时表的数据只在当前事务有效,通过语句:ON COMMIT DELETE ROWS 指定(默认方式,如下两行结果一致)。

CREATE GLOBAL TEMPORARY TABLE TEMP_TAB1(HID NUMBER,HNAME VARCHAR2(100))

CREATE GLOBAL TEMPORARY TABLE TEMP_TAB1(HID NUMBER,HNAME VARCHAR2(100)) ON COMMIT DELETE ROWS

 

会话级临时表的数据只在当前会话有效,通过语句:ON COMMIT PRESERVE ROWS指定。

CREATE GLOBAL TEMPORARY TABLE TEMP_TAB2(HID NUMBER,HNAME VARCHAR2(100)) ON COMMIT PRESERVE ROWS;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30126024/viewspace-1979083/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Welcome to Lukes DB HOME。11G OCM, 8年以上DBA工作经验,博客仅记录自己的一个学习过程,不代表完全准确,如有需要,欢迎转载。

注册时间:2015-02-02

  • 博文量
    371
  • 访问量
    475629