dba_segments之segment_type='TEMPORARY'

wisdomone1發表於2013-05-02

TEMPORARY:臨時段。除了磁碟排序產生臨時段之外,臨時表也會有臨時段。另外,在CTAS過程中,如果SQL還沒有最終完成,這個時候的表對應的段為TEMPORARY表,只有在SQL執行的最後將TEMPORARY段改為TABLE段。比如:
SQL> create table t2 as select * from dba_objects;
在執行上面語句的同時,執行:
SQL> select segment_type,owner,segment_name from dba_segments where segment_type=’TEMPORARY’;

SEGMENT_TYPE       OWNER                          SEGMENT_NAME
------------------ ------------------------------ --------------------------------------------
TEMPORARY          SYS                            1.84337
可以看到臨時段,在CTAS執行完之後,我們可以看到:

SQL> select segment_type,owner,segment_name from dba_segments where segment_type=’TEMPORARY’;

未選定行
SQL> select header_file,header_block from dba_segments where wner=USER and segment_name=’T2′;

HEADER_FILE HEADER_BLOCK
----------- ------------
          1        84337
可以看到,之前的臨時段(其段名為一個特別的名字1.84337,段頭的檔案號和塊號),與CTAS後的表的段頭一致。
另外在表和索引的MOVE、REBUILD階段也會有臨時段。所以臨時段不一定是在臨時表中,在普通的表空間中也可能會存在。
 注意在排序段和臨時表的段在並沒有在DBA_SEGMENTS檢視,而是在V$TEMPSEG_USAGE檢視中。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-759630/,如需轉載,請註明出處,否則將追究法律責任。

相關文章