`
Turandot
  • 浏览: 51524 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

Oracle 全局临时表

阅读更多

Oracle 全局临时表

 

     临时表(Tempotary table)用于保存事务或会话期间的中间结果集。临时表中保存的数据只对当前会话可见,所有会话都看不到其他会话的数据;即使当前会话已经提交了(commit)数据,别的会话也看不到它的数据。对于临时表,不存在多用户并发的问题,因为一个会话不会因为使用一个临时表而阻塞另一个会话。即使我们“锁住”了临时表,也不会妨碍其他会话使用临时表。

     

    临时表比常规表生成的redo少得多。不过由于临时表必须为其中包含的数据生成undo信息,所以也会生成一定的redo。update和delete会生成最多的undo,insert和select生成的undo最少。

 

    临时表会从当前登录用户的临时表空间分配存储空间,或者如果从一个定义者权限过程访问临时表,就会使用该过程所有者的临时表空间。全局临时表实际上是表本身的一个模板。创建临时表的动作不涉及存储空间分配,不会为此初始区段,这与常规表有所不同。对于临时表,运行时当一个会话第一次在临时表中放入数据时,才会为该会话创建一个临时段。由于每个回话会得到其自己的临时段(而不是一个现有段的一个区段),每个用户可能在不同的表空间为其看in是表分配空间。USER1的临时表空间可能设置为TEMP1,因此他的临时表会从这个表空间分配。USER2可能把TEMP2作为其临时表空间,它的临时表就会从那里分配。

 

   Oracle的临时表与其他关系数据库中的临时表类似,主要区别是:Oracle的临时表是“静态”定义的。每个数据库只创建一次临时表,而不是为数据库中的每个存储过程都创建一次。在Oracle历史表一定存在,他们作为对象放在数据字典中,但是在会话向临时表中放入数据之前,临时表看上去总是空的。由于临时表是静态定义的,所以你能创建引用临时表的视图,还可以创建存储过程只用静态SQL来引用临时表,等等。

 

    临时表可以是会话的(临时表中的数据可以跨提交存在,即提交之前仍然存在,但是断开连接后再连接时数据就没有了),也可以是基于事务的(提交之后数据就消失)。语法如下:

  • 基于会话  create global temporary table temp_table_session (...)  on commit preserve rows

         基于会话的临时表,在会话断开之前,或者通过一个delete或truncate物理地删除行之前,这些行会一直存在于这个临时表中。只有我的会话能看到这些行,即使我已经提交,其他会话也无法看到我的行。

  • 基于事务   create global temporary table temp_table_session (...)  on commit delete rows

          基于事务的临时表,我的会话提交时,临时表中的行就不见了。只需把分配给这个表的临时区段交回,这些行就会消失,在临时表的自动清除过程中不存在开销。

 

   

       临时表可以有永久表的许多属性。他们可以有触发器,检查约束,索引等。但永久表的某些特性在临时表中并不支持,这包括以下特性。

  • 不能有引用完整性约束。临时表不能作为外键的目标,也不能在临时表中定义外键。
  • 不能是IOT
  • 不能在任何类型的聚簇中
  • 不能分区
  • 不能通过ANALYZE表命令生成统计信息

        在所有数据库中,临时表的缺点之一就是优化器不能正常地得到临时表的真实统计信息。使用基于代价的优化器(CBO)时,有效的统计对于优化器的成败至关重要。

1
0
分享到:
评论

相关推荐

    ORACLE中临时表

    Oracle 临时表功能介绍: Oracle中的临时表是全局的,需要在数据库设计时创建完成,而不是程序使用时。每个登陆用户都使用这一个相同的临时表,但互相之间看不到彼此的数据,也就是说临时表是会话独立的。

    PostgreSQLOracle风格的全局临时表

    一个库,用于在PostgreSQL数据库中模拟Oracle样式的永久临时表。

    Oracle兼容性和全局临时表的实现.pptx

    Oracle兼容性和全局临时表的实现.pptx

    Oracle创建表空间、临时表、用户及用户授权

    本资源着重介绍使用PL/SQL工具完成Oracle创建表空间、临时表、用户及用户授权的使用说明,供初学者参考

    不要让临时表空间影响数据库性能

    当这个分区的大小不足以容纳排序后所产生的记录时,数据库系统就会将临时数据存放到临时表空间 中。这就是临时表空间的来历。看起来好像这个临时表空间是个临时工,对于数据库的影响不会有多大。其实大家这是误解这...

    pgtt:PostgreSQL扩展,用于创建,管理和使用Oracle风格的全局临时表以及其他RDBMS

    PostgreSQL全局临时表 pgtt是PostgreSQL扩展,用于创建,管理和使用Oracle风格的Global Temporary Tables和其他RDBMS。 此扩展的目的是提出一个扩展,以提供等待核心实现的全局临时表功能。 此扩展的主要目的是在...

    Oracle 数据库 临时数据的处理方法

    当这个分区的大小不足以容纳排序后所产生的记录时,数据库系统就会将临时数据存放到临时表空间中。这就是临时表空间的来历。看起来好像这个临时表空间是个临时工,对于数据库的影响不会有多大。其实大家这是误解这个...

    Oracle数据库程序包全局变量的应用

    在程序开发过程中,往往会将该变量或常数存储于临时表或前台程序的全局变量中,由此带来运行效率降低<频繁读取临时表>或安全隐患<存于前台程序变量,可跟踪内存变量获得>。  本文主要论述将全局变量或常数...

    ORACLE的五种表的优缺点概述

    一、普通表(heap table):适合大部分设计场景,有优点也有缺点。 优点: 1.语法简单方便 2.适合大部分场景 缺点: ...一个是基于会话的全局临时表(on commit preserve rows),一个是基于事务的全局临时

    临时表空间的管理与受损恢复

    Oracle 临时表空间是Oracle数据库的...  临时数据通常只在一个数据库会话期间内存在的数据,分为两种形式,排序数据和全局临时表  临时数据不会被写入存储对象的普通表空间内,而是存储在临时表空间的临时段中  

    Oracle 10g应用指导

    主要包括各种类型的表创建以及适用情形,如外部表、分区表、嵌套表、全局临时表等;完整性约束的管理;索引,包括B树索引、基于函数的索引、位图索引、反向索引、降序索引、压缩索引等的使用方法及其适用情形等。在...

    Oracle+10g应用指导与案例精讲

    主要包括各种类型的表创建以及适用情形,如外部表、分区表、嵌套表、全局临时表等;完整性约束的管理;索引,包括B树索引、基于函数的索引、位图索引、反向索引、降序索引、压缩索引等的使用方法及其适用情形等。在...

    Oracle8i_9i数据库基础

    §3.1.3 建立临时表结构 97 §3.3 修改表结构 98 §3.3.1 修改表结构命令 98 §3.3.2 修改表结构例子 99 §3.3.3 删除表结构 101 §3.3.4 使用CHECK作限制约束 101 §3.3.5 使用UNRECOVERABLE创建表 102 §3.3.6 将...

    Oracle自学(学习)材料 (共18章 偏理论一点)

    11 管理表 目标 11-2 储存用户数据 11-3 Oracle 数据类型 11-5 ROWID 格式 11-8 行的结构 11-10 创建一张表 11-11 创建临时表 11-13 创建表:指南 11-14 修改储存参数 11-15 手工分配片 11-16 重构非分区表 11-17 ...

    收获不知Oracle

    4.2.3.3 全局临时表两大重要特性 149 4.2.4 神通广大的分区表 153 4.2.4.1 分区表类型及原理155 4.2.4.2 分区表最实用的特性 165 4.2.4.3 分区索引类型简述176 4.2.4.4 分区表之相关陷阱177 4.2.5 有趣的索引组织表 ...

    ORACLE9i_优化设计与系统调整

    §9.4.4 临时表空间设计规划 100 §9.4.5 数据文件和日志文件在不同磁盘上 101 §9.5 数据库物理设计 101 §9.5.1 定量估计 101 §9.5.2 表空间与数据文件 102 §9.5.3 物理设计原则 103 §9.5.4 数据库物理设计内容...

    Oracle数据库管理员技术指南

    7.8.7 恢复丢失的临时表空间 7.8.8 只读表空间丢失 7.8.9 索引表空间丢失 7.9 恢复联机重做日志 7.9.1 联机重做日志组某个成员丢失 7.9.2 非活动的重做日志组丢失 7.9.3 活动重做日志组丢失 7.10 恢复丢失的...

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    15.3.4临时表空间的调整 15.3.5日志文件的调整 15.3.6 UNDO表空间的调整 15.4应用系统 15.4.1应用拆分 15.4.2 SQL执行过程 15.4.3 SQL解析 15.4.4 SQL优化 15.4.5 SQL行源生成 15.4.6 SQL执行 15.5本章小...

    oracle 优化培训资料

    每次启动例程时,会分配系统全局区 (SGA) 并启动 Oracle 后台进程。后台进程代表调用进程执行各种功能。它们把为每个用户运行的多个 Oracle 程序所处理的功能统一起来。后台进程执行输入/输出 (I/O),并监视其它 ...

Global site tag (gtag.js) - Google Analytics