您好,登錄后才能下訂單哦!
Oracle10g新特性臨時表空間組的示例分析,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
在oracle10g以前,每個用戶只能使用一個臨時表空間,就是其默認臨時表空間。oracle10g提供了新的臨時表空間組的功能,允許將多個臨時表空間打包成一個組,然后指定用戶的默認臨時表空間為該臨時表空間組,從而達到一個用戶可以使用多個臨時表空間的目的。
一個臨時表空間組至少包含一個臨時表空間。
臨時表空間組無法顯式創建,當第一個臨時表空間分配給該組時自動創建,當組內所有臨時表空間被移除時自動刪除。
臨時表空間組支持的操作:
可以將臨時表空間從一個組移動到另外一個組(如果組不存在,則自動創建)。
可以將組中的臨時表空間從組中移除。
可以將目前不屬于任何組的臨時表空間加入一個組。
使用臨時表空間組的好處:
防止一個臨時表空間出現空間不足的問題。
同一個用戶同時連接多個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分別使用了兩個不同的臨時表空間。
關于Oracle10g新特性臨時表空間組的示例分析問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。