臨時表空間
l 是為排序操作使用的;
l 可以有多個使用者共享,不能包含任何永久對象;
l 其排序段是在執行個體啟動後當有第一個排序操作時建立的,排序段在需要時可以通過配置設定EXTENTS 來擴充;
l 建立臨時表空間時,必須使用标準資料塊,最好使用本地管理的表空間;
l 臨時資料檔案的狀态不能為隻讀;
l 不能将臨時資料檔案重指令;
l 臨時資料檔案總是置為NOLOGGING狀态;
l 不能使用ALTER DATABASER 指令建立臨時資料檔案;
l 以隻讀方式運作的資料庫需要臨時資料檔案;
l 媒體回複不能是恢複臨時資料檔案;
l 為了優化某一臨時表空間中排序的效率,應該将UNIFORM SIZE 設為 SORT_ARTA_SIZE (PGA中排序區的大小)參數的整數倍
<b>檢視在資料庫中有多少個表空間以及它們的狀态</b>
SELECT tablespace_name, status, contents
FROM dba_tablespaces;
<b>檢視臨時表空間和對應的資料檔案</b>
SELECT f.file#, t.ts#, f.name “File”, t.name “Tablespace”
FROM v$tempfile f, v$tablespace t
WHERE f.ts# = t.ts#;
<b>建立臨時表空間</b>
CREATE TEMPORARY TABLESPACE jinlian_temp
TEMPFILE ‘J:\DISK9\MOON\jinlian_temp.dbf’
SIZE 10M
EXTENT MANAGEMENT LOCAL
UNIFORM SIZE 2M;
<b>驗證該表空間是否建立,是否為臨時表空間,對應的資料檔案是否也被建立</b>
SELECT tablespace_name, status, contents
FROM dba_tablespaces
WHERE tablespace_name LIKE ‘JIN%’;
SELECT f.file#, t.ts#, f,name “File” , t.name “tablespace” //注意,此處别名也加了””
FROM v$tempfile f, v$tablespace t
WHERE f.ts# = t.ts#
SELECT tablespace_name, block_name, extent_management, segment_space_management, min_extlen
如果沒有設定預設臨時表空間,那麼使用者在建立它時沒有使用TEMPORARY TABLESPACE子句,将自動使用system 表空間作為排序區,使system表空間碎片化,進而使資料庫系統效率下降。
預設臨時表空間不能被删除,除非有一個新的預設臨時表空間(利用ALTER DATABASE 設定)。
因為預設臨時表空間必須是臨時(temporary)表空間或者是系統(system)表空間,是以不能将預設臨時表空間改為一個永久表空間,也不能将其設定為脫機。
得到目前預設臨時表空間
COL PROPERTY_NAME FOR A25;
COL PROPERTY_VALUE FOR A16;
COL DESCRIPTION FOR A38;
SELECT * FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME LIKE ‘DEFAULT%’;