【TABLESPACE】使用“ALTER TABLESPACE”命令的“RENAME”功能實現表空間快速重新命名

secooler發表於2011-07-09
  在Oracle 10g環境中使用“ALTER TABLESPACE”命令的“RENAME TO”可以實現表空間快速重新命名的功能,我們體驗一下這種方便快捷的方法。

1.查詢資料庫版本資訊
sys@ora10g> 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 Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

2.建立表空間TBS_SECOOLER
sys@ora10g> create tablespace tbs_secooler datafile '/oracle/ora10gR2/oradata/ora10g/tbs_secooler_01.dbf' size 10m;

Tablespace created.

3.查詢表空間與資料檔案的對應關係
sys@ora10g> col tablespace_name for a20
sys@ora10g> col file_name for a51
sys@ora10g> select tablespace_name,file_name from dba_data_files where file_name like '%secooler%';

TABLESPACE_NAME      FILE_NAME
-------------------- ---------------------------------------------------
TBS_SECOOLER         /oracle/ora10gR2/oradata/ora10g/tbs_secooler_01.dbf

此處資訊用作後面的比較。

4.在TBS_SECOOLER表空間上建立使用者SECOOLER並授權
sys@ora10g> create user secooler identified by secooler default tablespace tbs_secooler;

User created.

sys@ora10g> grant connect,resource to secooler;

Grant succeeded.

5.查詢使用者與表空間的對應關係
sys@ora10g> select username,default_tablespace from dba_users where username = 'SECOOLER';

USERNAME                       DEFAULT_TABLESPACE
------------------------------ ------------------------------
SECOOLER                       TBS_SECOOLER

此處資訊用作後續比較。

6.在SECOOLER使用者中建立測試表
sys@ora10g> conn secooler/secooler
Connected.
secooler@ora10g> create table t_secooler as select * from all_objects;

Table created.

7.查詢表與表空間的對應關係
secooler@ora10g> conn / as sysdba
Connected.

sys@ora10g> select segment_name,tablespace_name from dba_segments where segment_name='T_SECOOLER';

SEGMENT_NAME                   TABLESPACE_NAME
------------------------------ --------------------
T_SECOOLER                     TBS_SECOOLER

此處資訊用作後續比較。

8.調整表空間名字
我們將表空間TBS_SECOOLER更名為TBS_ANDY。
sys@ora10g> alter tablespace TBS_SECOOLER rename to TBS_ANDY;

Tablespace altered.

9.表空間調整後的查詢確認
1)查詢表空間與資料檔案的對應關係
sys@ora10g> select tablespace_name,file_name from dba_data_files where file_name like '%secooler%';

TABLESPACE_NAME      FILE_NAME
-------------------- ---------------------------------------------------
TBS_ANDY             /oracle/ora10gR2/oradata/ora10g/tbs_secooler_01.dbf

可見,表空間的名字發生的變化,但對應的資料檔案並沒有改變。

2)查詢SECOOLER使用者與表空間的對應關係
sys@ora10g> select username,default_tablespace from dba_users where username = 'SECOOLER';

USERNAME                       DEFAULT_TABLESPACE
------------------------------ ------------------------------
SECOOLER                       TBS_ANDY

SECOOLER使用者的預設表空間已經有原來的TBS_SECOOLER調整為現在的TBS_ANDY。

3)查詢表與表空間的對應關係
sys@ora10g> select segment_name,tablespace_name from dba_segments where segment_name='T_SECOOLER';

SEGMENT_NAME                   TABLESPACE_NAME
------------------------------ --------------------
T_SECOOLER                     TBS_ANDY

表T_SECOOLER的儲存表空間已經由原來的TBS_SECOOLER調整為現在的TBS_ANDY。

透過以上測試,可見使用“ALTER TABLESPACE”命令的“RENAME TO”功能可以完美的實現表空間快速重新命名的目標。

10.小結
  Oracle資料庫在每一個新版本中都會給我們帶來一些驚喜的功能,這些新的改變往往就是那些我們迫切要求的功能。
本例中的表空間快速重新命名的功能就是一例。

Good luck.

secooler
11.07.09

-- The End --

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

相關文章