Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1114783
  • 博文数量: 231
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 2662
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-03 16:35
个人简介

学无止境

文章分类

全部博文(231)

文章存档

2014年(7)

2013年(103)

2011年(11)

2010年(53)

2009年(57)

分类: Oracle

2010-05-17 22:03:21

temp segment不一定就是在临时表空间中的排序段,它也可能在持久表空间,作为临时用途出现。如创建或删除表或索引时。
例如:当执行CREATE INDEX时,Oracle会自己创建一个TEMP段,用来临时保存最终的索引持久数据。在CREATE INDEX操作结束后,该TEMP段在数据字典中会被转换为真正的INDEX段。在CREATE INDEX的操作过程中,一直保持着temp段,如果遭遇空间不足,就会在持久表空间上报ORA-1652错误,无法在某个持久表空间上扩展临时段。如果创建失败,该临时段又较大,可能需要等待一段时间,由PMON进程调用SMON进程清理temp segment。
一个临时段可能来自以下几种条件:
1.A SORT          用于SELECT或者DML/DDL
2.CREATE INDEX    索引创建时在默认TEMP表空间中排序用到临时段;
                  以及用于创建最终index在索引表空间中的临时段,
                  一旦索引创建完成,段的类型将会改变。
3.CREATE PK CONSTRAINT
4.ENABLE CONSTRAINT
5.CREATE TABLE    一张新表来自于1个临时段
                  例如:MINEXTENTS>1,或者执行CREATE table as SELECT
    
6.访问GLOBAL TEMPORARY TABLE
                  当访问一张global temporary table,一个临时段用于保存临时数据
阅读(1321) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~