Oracle 10G 臨時表空間組

Oracle 10g 引進了臨時表空間組(temporary tablespace group)的概念,它允許用戶
在不同的會話中同時利用多個臨時表空間。

 1. 臨時表空間組的主要特徵


一個臨時表空間組必須由至少一個臨時表空間組成,並且無明確的最大數量限制。
如果刪除了一個臨時表空間組的所有成員,該組也自動被刪除。
臨時表空間的名字不能與臨時表空間組的名字相同。
在給用戶分配一個臨時表空間時,可以使用臨時表空間組的名字代替實際的臨時表空間
名;在給數據庫分配默認臨時表空間時也可以使用臨時表空間組的名字。


2. 臨時表空間組的優點


使用臨時表空間組而非普通的臨時表空間,有如下好處:
由於SQL 查詢可以並發使用幾個臨時表空間進行排序操作,因此SQL 查詢很少會出現
排序空間超出,避免當臨時表空間不足時所引起的磁盤排序問題。
可以在數據庫級指定多個默認臨時表空間。
一個並行操作的並行服務器將有效地利用多個臨時表空間。
一個用戶在不同會話中可以同時使用多個臨時表空間。

 3. 管理臨時表空間組

 

 
臨時表空間組是在創建臨時表空間時通過指定GROUP 字句創建的。可以將一個表空
間從一個組移動另一個組,或是從一個組中刪除臨時表空間,或是往組裡添加新的表空間。


1. 創建臨時表空間組

創建臨時表空間時指定GROUP:
createSMALLFILE
TEMPORARYTABLESPACE”TEMP01″
TEMPFILE
‘/u01/app/oracle/oradata/orcl/temp_tbs_01a.dbf’SIZE5MREUSE
AUTOEXTENDONNEXT640KMAXSIZEUNLIMITED
EXTENTMANAGEMENTLOCAL
UNIFORM.SIZE1M
TABLESPACEGROUPTBS_GROUP_1
GO
createSMALLFILE
TEMPORARYTABLESPACE”TEMP02″
TEMPFILE
‘/u01/app/oracle/oradata/orcl/temp_tbs_02a.dbf’SIZE5MREUSE
AUTOEXTENDONNEXT640KMAXSIZEUNLIMITED
EXTENTMANAGEMENTLOCAL
UNIFORM.SIZE1M
TABLESPACEGROUPTBS_GROUP_1
GO
createSMALLFILE
TEMPORARYTABLESPACE”TEMP03″
TEMPFILE

‘/u01/app/oracle/oradata/orcl/temp_tbs_03a.dbf’SIZE5MREUSE
AUTOEXTENDONNEXT640KMAXSIZEUNLIMITED
EXTENTMANAGEMENTLOCAL
UNIFORM.SIZE1M
TABLESPACEGROUPTBS_GROUP_2
GO
createSMALLFILE
TEMPORARYTABLESPACE”TEMP04″
TEMPFILE
‘/u01/app/oracle/oradata/orcl/temp_tbs_04a.dbf’SIZE5MREUSE
AUTOEXTENDONNEXT640KMAXSIZEUNLIMITED
EXTENTMANAGEMENTLOCAL
UNIFORM.SIZE1M
TABLESPACEGROUPTBS_GROUP_2
GO

2. 查詢臨時表空間組


select*FROMDBA_TABLESPACE_GROUPS
GROUP_NAMETABLESPACE_NAME
——————————-
TBS_GROUP_1TEMP01
TBS_GROUP_1TEMP02

TBS_GROUP_2TEMP03
TBS_GROUP_2TEMP04

3. 臨時表空間的移動 新開session2 執行
SQL>connzhangzj/zhangzj
已連接。
selectA.TABLE_NAME,B.TABLE_NAMEFROMDICTA,DICTB
sys 查詢:
SQL>selectUSERNAME,SESSION_NUM,TABLESPACEFROMV$SORT_USAGE;
USERNAMESESSION_NUMTABLESPACE
————————————–
ZHANGZJ35743TEMP01
ZHANGZJ25683TEMP02
可以發現,同一個用戶ZHANGZJ 的兩個session 分別使用了兩個不同的臨時表空間。

 
即:刪除組成臨時表空間組的所有臨時表空間
先查看要刪除的臨時表空間組包含哪些臨時表空間
select*FROMDBA_TABLESPACE_GROUPS
然後刪除這些臨時表空間,即可
dropTABLESPACETEMP01INCLUDINGCONTENTSANDDATAFILES
GO
dropTABLESPACETEMP02INCLUDINGCONTENTSANDDATAFILES
GO
6. 刪除臨時表空間組

 


alterDATABASEORCLDEFAULTTEMPORARYTABLESPACETBS_GROUP_1
5. 設置數據庫臨時表空間組

可以將“未分組”或“已分組”的臨時表空間移動到指定的臨時表空間中,或者是移出:
將未分組的臨時表空間TEMP_01 加入分組TBS_GROUP_1
alter TABLESPACE TEMP_01 TABLESPACE GROUP TBS_GROUP_1
將已分組的臨時表空間TEMP_01 加入分組TBS_GROUP_2
alter TABLESPACE TEMP01 TABLESPACE GROUP TBS_GROUP_2
將已分組的臨時表空間TEMP04 移除分組TBS_GROUP_2
alter TABLESPACE TEMP04 TABLESPACE GROUP ’
查看結果:
select*FROMDBA_TABLESPACE_GROUPS
GROUP_NAMETABLESPACE_NAME
——————————-
TBS_GROUP_1TEMP02
TBS_GROUP_1TEMP_01
TBS_GROUP_2TEMP01
TBS_GROUP_2TEMP03


4. 把臨時表空間組指定給用戶


查看用戶的默認表空間
selectUSERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE
FROMDBA_USERS
創建用戶時指定
createUSERzhangzjIDENTITYBYzhangzj
DEFAULTTABLESPACEusers
TEMPORARYTABLESPACEtbs_group_1
修改已有用戶
alterUSERZHANGZJTEMPORARYTABLESPACETBS_GROUP_1

 


首先用sys 用戶查詢:
selectUSERNAME,SESSION_NUM,TABLESPACEFROMV$SORT_USAGE
測試過程:
新開session1 執行
SQL>connzhangzj/zhangzj
已連接。
selectA.TABLE_NAME,B.TABLE_NAME
FROMDICTA,DICTBORDERBYA.TABLE_NAME

6. 同一個用戶的不同session 使用不同的臨時表空間

This entry was posted in 10G, Oracle.

Comments are closed.

在线客服系统