Oracle9i中的臨時表空間的重建和切換

oracle_ace發表於2007-12-20

Oracle9i為我們提供了一個全域性的臨時表空間。有的時候我們會發現在做了大量的排序操作後,temp表空間並沒有去釋放,而且在更大的程度上面佔用了我們的磁碟空間,其實我們可以通過重建或者切換的手段來使我們的temp表空間得到重生。

首先我們可以先看一下,當前使用者所屬的臨時表空間有那些
SQL> select username ,temporary_tablespace from dba_users;

USERNAME                       TEMPORARY_TABLESPACE
------------------------------ ------------------------------
SYS                            TEMP1
SYSTEM                         TEMP1
DBSNMP                         TEMP1
HUJINPEI                       TEMP1
ALAN1                          TEMP1
PERFUSER                       TEMP1
ALAN2                          TEMP1
MYUSER                         TEMP1
OUTLN                          TEMP1
WMSYS                          TEMP1

已選擇10行。

檢視當前有那些臨時檔案
SQL> select name from v$tempfile;

NAME
--------------------------------------------------------------------------------
D:\ORACLE\ORADATA\ICMNLSDB\TEMP1_01.DBF
D:\ORACLE\ORADATA\ICMNLSDB\TEMP1_02.DBF

為了切換這個臨時檔案,我們可以重新建立一個臨時表空間
SQL> create temporary tablespace temp
  2  tempfile 'D:\ORACLE\ORADATA\ICMNLSDB\TEMP01.DBF' size 10M ;

表空間已建立。

SQL> alter tablespace temp add tempfile 'D:\ORACLE\ORADATA\ICMNLSDB\TEMP02.DBF' size 10M;

表空間已更改。

這個時候我們就可以將剛剛建好的TEMP表空間設定為我們資料庫預設的臨時表空間:
SQL> alter database default temporary tablespace temp;

資料庫已更改。

SQL> select username,temporary_tablespace from dba_users;

USERNAME                       TEMPORARY_TABLESPACE
------------------------------ ---------------------------
SYS                            TEMP
SYSTEM                         TEMP
DBSNMP                         TEMP
HUJINPEI                       TEMP
ALAN1                          TEMP
PERFUSER                       TEMP
ALAN2                          TEMP
MYUSER                         TEMP
OUTLN                          TEMP
WMSYS                          TEMP

已選擇10行。

當然我們還可以選擇DROP掉以前舊的TEMP1的表空間
SQL> drop tablespace temp1 including contents ;

表空間已丟棄。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12361284/viewspace-958/,如需轉載,請註明出處,否則將追究法律責任。

相關文章