共計 3410 個字符,預計需要花費 9 分鐘才能閱讀完成。
本篇內容介紹了“怎么理解 Oracle 臨時表空間組”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
在 oracle10g 以前,每個用戶只能使用一個臨時表空間,就是其默認臨時表空間。oracle10g 及其以后版本提供了新的臨時表空間組的功能,允許將多個臨時表空間打包成一個組,然后指定用戶的默認臨時表空間為該臨時表空間組,從而達到一個用戶可以使用多個臨時表空間的目的。
一個臨時表空間組至少包含一個臨時表空間。臨時表空間組無法顯式創建,當第一個臨時表空間分配給該組時自動創建,當組內所有臨時表空間被移除時自動刪除。
臨時表空間組支持的操作:
可以將臨時表空間從一個組移動到另外一個組(如果組不存在,則自動創建)。
可以將組中的臨時表空間從組中移除。
可以將目前不屬于任何組的臨時表空間加入一個組。
使用臨時表空間組的好處:
防止一個臨時表空間出現空間不足的問題。
同一個用戶同時連接多個 session 時可以使用不同的臨時表空間。
在并行操作中可以并行使用多個臨時表空間。
臨時表空間組支持的操作:
可以將臨時表空間從一個組移動到另外一個組(如果組不存在,則自動創建)。
可以將組中的臨時表空間從組中移除。
可以將目前不屬于任何組的臨時表空間加入一個組。
使用臨時表空間組的好處:
防止一個臨時表空間出現空間不足的問題。
同一個用戶同時連接多個 session 時可以使用不同的臨時表空間。
在并行操作中可以并行使用多個臨時表空間。
下面給出幾個例子:
環境
SQL select * from v$version;
BANNER
——————————————————————————–
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Prod
PL/SQL Release 10.2.0.1.0 – Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 – Production
NLSRTL Version 10.2.0.1.0 – Production
1. 創建臨時表空間組
SQL create temporary tablespace temp1
2 tempfile e:/oracle/oradata/ning/temp101.dbf size 10m
3 tablespace group group1;
表空間已創建。
SQL create temporary tablespace temp2
2 tempfile e:/oracle/oradata/ning/temp201.dbf size 10m
3 tablespace group group1;
表空間已創建。
2. 查看系統中目前存在的臨時表空間組的信息
SQL select * from dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
—————————— ——————————
GROUP1 TEMP1
GROUP1 TEMP2
3. 移動臨時表空間到新的臨時表空間組
SQL alter tablespace temp2 tablespace group group2;
表空間已更改。
SQL select * from dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
—————————— ——————————
GROUP1 TEMP1
GROUP2 TEMP2
4. 將臨時表空間從臨時表空間組中移出
SQL alter tablespace temp2 tablespace group
表空間已更改。
SQL select * from dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
—————————— ——————————
GROUP1 TEMP1
5. 臨時表空間組的名字不能和表空間的名字沖突
SQL create temporary tablespace temp3
2 tempfile e:/oracle/oradata/ning/temp301.dbf size 10m
3 tablespace group temp3;
create temporary tablespace temp3
*
第 1 行出現錯誤:
ORA-10918: TABLESPACE GROUP name cannot be the same as tablespace name
SQL create temporary tablespace temp3
2 tempfile e:/oracle/oradata/ning/temp301.dbf size 10m
3 tablespace group temp1;
create temporary tablespace temp3
*
第 1 行出現錯誤:
ORA-01543: 表空間 TEMP1 已存在
6. 刪除組中所有的臨時表空間后,組會自動刪除
SQL select * from dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
—————————— ——————————
GROUP1 TEMP1
SQL drop tablespace temp1 including contents and datafiles;
表空間已刪除。
SQL select * from dba_tablespace_groups;
未選定行
7. 可以將數據庫或者用戶的默認臨時表空間指定為臨時表空間組
SQL create temporary tablespace temp1
2 tempfile e:/oracle/oradata/ning/temp101.dbf size 10m
3 tablespace group group1;
表空間已創建。
SQL alter tablespace temp2 tablespace group group1;
表空間已更改。
SQL select * from dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
—————————— ——————————
GROUP1 TEMP1
GROUP1 TEMP2
SQL alter database default temporary tablespace group1;
數據庫已更改。
SQL alter user ning temporary tablespace group1;
用戶已更改。
8. 同一個用戶的不同 session 可以使用不同的臨時表空間
首先用 sys 用戶查詢
SQL select username, session_num, tablespace from v$sort_usage;
未選定行
新開 session1 執行
SQL conn ning/ning
已連接。
select a.table_name, b.table_name from dict A, dict B order by a.table_name;
新開 session2 執行
SQL conn ning/ning
已連接。
select a.table_name, b.table_name from dict A, dict B;
sys 查詢:
SQL select username, session_num, tablespace from v$sort_usage;
USERNAME SESSION_NUM TABLESPACE
———- ———– ———-
NING 74 TEMP2
NING 62 TEMP1
可以發現,同一個用戶 ning 的兩個 session 分別使用了兩個不同的臨時表空間。
“怎么理解 Oracle 臨時表空間組”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!