oracle11g中的臨時表空間
阿新 • • 發佈:2020-08-19
臨時表空間:用來存放使用者的臨時性資料,在需要時覆蓋,關閉時自動刪除,不能存放 永久性資料。臨時表空間在硬碟中。
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;