1. 程式人生 > 實用技巧 >oracle11g中的臨時表空間

oracle11g中的臨時表空間

臨時表空間:用來存放使用者的臨時性資料,在需要時覆蓋,關閉時自動刪除,不能存放 永久性資料。臨時表空間在硬碟中。


1、臨時表空間概念介紹 和 舉例介紹

  臨時表空間用來管理資料庫排序操作以及用於儲存臨時表、中間排序結果等臨時物件,當ORACLE裡需要用到SORT的時候,並且當PGA中sort_area_size大小不夠時,將會把資料放入臨時表空間裡進行排序。像資料庫中一些操作: CREATE INDEX、 ANALYZE、SELECT DISTINCT、ORDER BY、GROUP BY、 UNION ALL、 INTERSECT、MINUS、SORT-MERGE JOINS、HASH JOIN等都可能會用到臨時表空間。當操作完成後,系統會自動清理臨時表空間中的臨時物件,自動釋放臨時段。這裡的釋放只是標記為空閒、可以重用,其實實質佔用的磁碟空間並沒有真正釋放。這也是臨時表空間有時會不斷增大的原因。

  • 例如:(大資料量的排序)當用戶對很多資料行進行排序時,排序在PGA中進行。但是如果排序的資料過多,導致記憶體不足時,oracle會把要排序的資料分成多份,每次只取一份放在PGA中進行排序,其他的部分都放到臨時表空間中,當PGA裡的部分排序完成後,把排序好的部分交換到臨時表空間中,同時再從臨時表空間裡取一份沒有排序的資料到PGA中進行排序,這樣直到所有資料排序完成為止。

臨時表空間與臨時表空間組 ?

臨時表空間組是一組由臨時表空間組成的組:
①臨時表空間與臨時表空間組不能同名。
②臨時表空間組不能被顯示的建立和刪除。
③建立:當我們把第一個臨時表空間分配給一個臨時表空間組時,oracle會自動建立這個臨時表空間組。

④刪除:將臨時表空間組的最後一個臨時表空間刪除,就會刪除這個臨時表空間組。


表空間相關檢視和語句、

用法語句
檢視資料庫中有哪些表空間 select * from v$tablespace;
同上述作用,查詢的資訊更多 select * from dba_tablespaces;
檢視所有的資料檔案(除臨時檔案) select * from dba_data_files;
檢視臨時檔案,臨時表空間所對應的檔案 select * from dba_temp_files;
檢視臨時檔案資訊 select * from v$tempfile;
檢視臨時表空間組 select * from dba_tablespace_groups;
檢視預設的臨時表空間 select property_name, property_value from database_properties where property_name = ‘DEFAULT_TEMP_TABLESPACE’;


臨時表空間的建立:
建立一個臨時表空間 ,不屬於組:
create temporary tablespace temp_name 
            tempfile' 路徑+檔名' size 大小 [autoextend on] ;
            --size單位m兆 autoextend on 自動增長
create temporary tablespace  temp2    
          tempfile 'D:\app\Administrator\oradata\orcl\temp2a.dbf'    
             size 10m autoextend on ;

建立一個臨時表空間屬於組:
create temporary tablespace temp_name tempfile' 路徑+檔名' 
            size 大小 [autoextend on]  tablespace group  group_name ;

create temporary tablespace temp3     
     tempfile    'D:\app\Administrator\oradata\orcl\temp3a.dbf'     
     size 10m autoextend on tablespace group  temp_grp;

有關臨時表空間的相關操作:

將臨時表空間temp2加入到臨時表空間組temp_grp中:

 alter tablespace temp2 tablespace group temp_grp;

將臨時表空間temp2從臨時表空間組temp_grp中移除:

 alter tablespace temp2 tablespace group ''  ;  --組名置空

給temp表空間新增一個臨時檔案temp3aa.dbf :

alter  tablespace  temp2 
  add tempfile 'D:\app\Administrator\oradata\orcl\temp3aa.dbf'      
   size 10m autoextend on  ;

修改系統預設的臨時表空間:
①將預設臨時表空間改成臨時表空間組 temp_grp (可包含多個臨時表空間):

alter database default  temporary tablespace  temp_grp;

②將預設臨時表空間改成臨時表空間temp2:

alter database default  temporary tablespace  temp_grp;