您好,登錄后才能下訂單哦!
本篇內容介紹了“怎么理解Oracle臨時表空間組”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
在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臨時表空間組”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。