溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么理解Oracle臨時表空間組

發(fā)布時間:2021-11-11 11:43:57 來源:億速云 閱讀:160 作者:iii 欄目:關(guān)系型數(shù)據(jù)庫

本篇內(nèi)容介紹了“怎么理解Oracle臨時表空間組”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

在oracle10g以前,每個用戶只能使用一個臨時表空間,就是其默認(rèn)臨時表空間。oracle10g及其以后版本提供了新的臨時表空間組的功能,允許將多個臨時表空間打包成一個組,然后指定用戶的默認(rèn)臨時表空間為該臨時表空間組,從而達(dá)到一個用戶可以使用多個臨時表空間的目的。

一個臨時表空間組至少包含一個臨時表空間。臨時表空間組無法顯式創(chuàng)建,當(dāng)?shù)谝粋€臨時表空間分配給該組時自動創(chuàng)建,當(dāng)組內(nèi)所有臨時表空間被移除時自動刪除。

臨時表空間組支持的操作:

  • 可以將臨時表空間從一個組移動到另外一個組(如果組不存在,則自動創(chuàng)建)。

  • 可以將組中的臨時表空間從組中移除。

  • 可以將目前不屬于任何組的臨時表空間加入一個組。

使用臨時表空間組的好處:

  • 防止一個臨時表空間出現(xiàn)空間不足的問題。

  • 同一個用戶同時連接多個session時可以使用不同的臨時表空間。

  • 在并行操作中可以并行使用多個臨時表空間。

臨時表空間組支持的操作:

  • 可以將臨時表空間從一個組移動到另外一個組(如果組不存在,則自動創(chuàng)建)。

  • 可以將組中的臨時表空間從組中移除。

  • 可以將目前不屬于任何組的臨時表空間加入一個組。

使用臨時表空間組的好處:

  • 防止一個臨時表空間出現(xiàn)空間不足的問題。

  • 同一個用戶同時連接多個session時可以使用不同的臨時表空間。

  • 在并行操作中可以并行使用多個臨時表空間。

下面給出幾個例子:

環(huán)境

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.創(chuàng)建臨時表空間組

SQL> create temporary tablespace temp1

2 tempfile 'e:/oracle/oradata/ning/temp101.dbf' size 10m

3 tablespace group group1;

表空間已創(chuàng)建。

SQL> create temporary tablespace temp2

2 tempfile ''e:/oracle/oradata/ning/temp201.dbf' size 10m

3 tablespace group group1;

表空間已創(chuàng)建。

2.查看系統(tǒng)中目前存在的臨時表空間組的信息

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 行出現(xiàn)錯誤:

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 行出現(xiàn)錯誤:

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.可以將數(shù)據(jù)庫或者用戶的默認(rèn)臨時表空間指定為臨時表空間組

SQL> create temporary tablespace temp1

2 tempfile ''e:/oracle/oradata/ning/temp101.dbf' size 10m

3 tablespace group group1;

表空間已創(chuàng)建。

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;

數(shù)據(jù)庫已更改。

SQL> alter user ning temporary tablespace group1;

用戶已更改。

8.同一個用戶的不同session可以使用不同的臨時表空間

首先用sys用戶查詢

SQL> select username, session_num, tablespace from v$sort_usage;

未選定行

新開session1執(zhí)行

SQL> conn ning/ning

已連接。

select a.table_name, b.table_name from dict A, dict B order by a.table_name;

新開session2執(zhí)行

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

可以發(fā)現(xiàn),同一個用戶ning的兩個session分別使用了兩個不同的臨時表空間。

“怎么理解Oracle臨時表空間組”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI