1. 创建SQL语句
CREATE GLOBAL TEMPORARY TABLE tablename (columns) [ ON COMMIT PRESERVE | DELETE ROWS ]
SQL> create global temporary table emp_temp(eno number) on commit delete rows;
-- transaction level duration,事务级别,此为默认选项
SQL> create global temporary table emp_temp(eno number) on commit preserve rows;
-- session level duration,会话级别
2. 隔离性:
数据只在会话或者事务级别可见。不同用户可以使用同一个临时表,但是看到的都是各自的数据。
3. 表上可以创建索引、视图、触发器等对象。
4. 索引只有在临时表是empty时可创建。
5. 临时表不产生数据的redo,但是会生成undo的redo。
6. 临时表目前只支持GLOBAL的,所以创建语句为create global temporary table XXX。
7. 使用truncate只对当前会话有效。
8. 不能export/import表上的数据,只能导入导出表定义。
9. 临时段在第一次insert或CATS时产生。
缺点:
1. 表定义不能自动drop。
2. 临时表目前只支持GLOBAL。
3. 只有无会话时才能DDL,否则可能报错:
ORA-14452: attempt to create, alter or drop an index on temporary table already in use
4. 临时表上默认不收集统计信息,如果需要收集统计信息,首先要确保临时表属性为ON COMMIT PRESERVE ROWS。
收集统计信息命令:analyze table table_name compute statistics;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20750200/viewspace-749981/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/20750200/viewspace-749981/