天天看點

臨時表空間   預設臨時表空間

臨時表空間  

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%’;

繼續閱讀