oracle 中的临时表

临时表:

除了永久表,oracle还可以建立临时表来保存 session私有的data,这些data只存在于一个事务或者session的持续存在的期间内。

CREATE GLOBAL TEMPORARY TABLE  语句建立了一个临时表,该临时表可以是事务级别,也可以是session级别。 对于事务级别的临时表,data存在于事务的持续期间。对于session级别的临时,data存在于session的持续期间。临时表中的data 对各自的session的是私有的。每个session 只能看到并且只能修改它自己的data。dml lock 对于 临时表上的data是不需要的。lock 语句对临时表没有作用,因为每个session都有他自己的私有data。

对于在 session级别的临时表发出truncate命令,会truncate掉属于那个session的data。truncate命令不会truncate掉 使用相同表名的其他的session的数据。

临时表上的dml语句不会生成redo。但是,undo logs for the data and redo logs for the undo logs 是生成的。在session终止(user logs off 或者 session 异常终止)时,临时表中的数据会自动drop掉。

可以在临时表上使用create index语句建立索引。建立在临时表上的索引也是临时的,索引中的data 与 临时表中的data 有相同的 session 或者 事务范围。

可以建立访问临时表和永久表的view。也可以在临时表上建立触发器。

oracle 实用工具(注:exp等)可以导出和导入 临时表的定义,但是,即使你使用rows子句,临时表中的data rows也是不会被导出的。类似的,你可以复制临时表的定义,但是不能复制表中的data。

oracle 中的临时表,布布扣,bubuko.com

时间: 2024-11-08 23:17:14

oracle 中的临时表的相关文章

Oracle中的临时表

Oracle中的临时表 在Oracle中,临时表是"静态"的,它与普通的数据表一样只需要一次创建,其结构从创建到删除的整个期间都是有效的.相对于其他类型的表,临时表只有在用户实际向表中添加数据时,才会为其分配空间,并且分配的空间来自临时表空间.这就避免了与永久对象的数据争用存储空间. 创建临时表的语法如下: CREATE GLOBAL TEMPORARY TABLE table_name( column_name data_type,[column_name data_type,...

如何在oracle中缩小临时表空间?ORA-01652无法在表空间中扩展temp

查询临时表空间有多大: SQL> SELECT tablespace_name, file_name, bytes FROM dba_temp_files WHERE tablespace_name like 'TEMP%'; TABLESPACE_NAME FILE_NAME BYTES ----------------- -------------------------------- -------------- TEMP /the/full/path/to/temp01.dbf 13,9

谈谈oracle中的临时表

--------------------创建临时表 临时保存从xml字符串解析来的数据--------------------------- 会话级别临时表SQL> create global temporary table temp_order01 (orderid number,ordernumber number,orderdate date) on commit delete rows; Table created. 事务级别临时表SQL> create global temporar

在oracle存储过程中创建临时表

在oracle的存储过程中,不能直接使用DDL语句,比如create.alter.drop.truncate等. 那如果我们想在存储过程中建立一张临时表就只能使用动态sql语句了: create or replace procedure pro as str_sql varchar2(100); begin -- 创建临时表 str_sql := 'create global temporary table temp_table ( col1 varchar2(10), col2 number

oracle中的exists 和not exists 用法详解

oracle中的exists 和not exists 用法详解 有两个简单例子,以说明 “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; T1数据量小而T2数据量非常大时,T1<<T2 时,1) 的查询效率高. 2) select * from T1 where T1.a in (select T2.a from T2) ; T1数据量非常大而T2数据量小时,T1>

ORACLE 中 SQL语句优化

(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):  ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.    (2) WHERE子句中的连接顺序.:  ORACLE采用自下而上的顺序解

Oracle中DBMS_LOB包使用小结

本文主要介绍oracle数据库中dbms_lob包的使用以及使用dbms_lob包来维护lob数据库类型的基本方法.随着社会的发展,在现代信息系统的开发中,需要存储的已不仅仅是简单的文字信息,同时还包括一些图片和音像资料或者是超长的文本.比如开发一套旅游信息系统,每一个景点都有丰富的图片.音像资料和大量的文字介绍.这就要求后台数据库要有存储这些数据的能力.ORACLE公司在其Oracle8i中通过提供LOB字段实现了该功能. 在ORACLE数据库中,LOB大对象类型是用来存储大量的二进制和文本数

Oracle、SqlServer——临时表

一.概述: oracle数据库的临时表的特点: 临时表默认保存在TEMP中: 表结构一直存在,直到删除:即创建一次,永久使用: 不支持主外键. 可以索引临时表和在临时表基础上建立视图.建立在临时表上的索引也是临时的,也是只对当前会话或者事务有效. 临时表可以拥有触发器. 临时表分为事务型和会话型 会话型:基于会话的临时表,数据从会话开始到会话结束之间是有效的,当会话结束时,表中的数据会自动清空.不同会话之间的数据是隔离的,互不影响. 事务型:基于事务的临时表,其比会话型的临时表更灵活,可以认为是

Oracle中的三种Join 方式

基本概念 Nested loop join: Outer table中的每一行与inner table中的相应记录join,类似一个嵌套的循环. Sort merge join: 将两个表排序,然后再进行join. Hash join: 将两个表中较小的一个在内存中构造一个Hash 表(对Join Key),扫描另一个表,同样对Join Key进行Hash后探测是否可以join,找出与之匹配的行. 一张小表被hash在内存中.因为数据量小,所以这张小表的大多数数据已经驻入在内存中,剩下的少量数据