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,一个临时段用于保存临时数据
阅读(1362) | 评论(0) | 转发(0) |