Oracle10g 表領域の改名おさらい の巻

投稿日: 2005年4月27日

<Oracle10g 表領域の改名おさらい の巻>
ペンネーム:アイスケーキ

今週は「表領域の改名」についておさらいをしていきます。

GW目前ではありますが、頭の中は既に南国へ向かって離陸されている方にも
とってもやさしい内容になっていますので、お付き合いください。
連休中もお仕事の方、え~~申し訳ありません。。。お疲れ様です。

★☆★

10gではALTER TABLESPACE RENAMEコマンドにより表領域の名前を変更できるよ
うになりました。(結構ニーズがあったのに、今まで出来なかったのは不思議)

設定方法:

SQL> ALTER TABLESPACE RENAME TO ;

早速確認をしてみましょう。

■環境
Microsoft Windows XP Pro
Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 – Production
With the Partitioning, OLAP and Data Mining options

■いざ!!
○使ってみましょう。
この機能を使用するには compatible のパラメータを 10.0 以上
でなければなりません。

SQL> show parameter compatible
NAME                                 TYPE        VALUE
------------------------------------ ----------- -----------
compatible                           string      10.1.0.3.0

▲設定変更はコマンド1発

SQL> select tablespace_name,STATUS from dba_tablespaces
  2  where tablespace_name like 'USER%';

TABLESPACE_NAME STATUS
--------------- ------
USERS           ONLINE

SQL> alter tablespace USERS rename to USERS_NEW;
Tablespace altered.

SQL> select tablespace_name,STATUS from dba_tablespaces
    where tablespace_name like 'USER%';

TABLESPACE_NAME STATUS
--------------- ------
USERS_NEW       ONLINE
^^^^^^^^^

▲因みに9iでは以下のようなエラーになります。

SQL> alter tablespace USERS rename to USERS_NEW;
alter tablespace users USERS to USERS_NEW
                                *
ERROR at line 1:
ORA-01904: DATAFILEキーワードが必要です。

<<その他いろいろ>>

○表領域がデフォルトの永続表領域の場合⇒前週号を見てください。
○表領域がデフォルトの一時表領域の場合

SQL> select PROPERTY_VALUE from DATABASE_PROPERTIES
  2  where  PROPERTY_NAME = 'DEFAULT_TEMP_TABLESPACE';

PROPERTY_VALUE
--------------
TEMP
SQL> alter tablespace TEMP rename to TEMP_NEW;
Tablespace altered.

SQL> select PROPERTY_VALUE from DATABASE_PROPERTIES
  2  where  PROPERTY_NAME = 'DEFAULT_TEMP_TABLESPACE';

PROPERTY_VALUE
--------------
TEMP_NEW
^^^^^^^^

SQL> select USERNAME, TEMPORARY_TABLESPACE from dba_users order by 1;

USERNAME TEMPORARY_TABLESPACE
-------- --------------------
SYS      TEMP_NEW
SYSTEM   TEMP_NEW
NEW_USER TEMP_NEW

▲ユーザに割り当てていたデフォルト一時表領域の設定も全て変更されます。

○表領域がUNDO表領域の場合

SQL> show parameter undo_tablespace
NAME            TYPE   VALUE
--------------- ------ --------
undo_tablespace string UNDOTBS1

SQL> select distinct TABLESPACE_NAME from DBA_UNDO_EXTENTS;

TABLESPACE_NAME
---------------
UNDOTBS1

SQL> alter tablespace UNDOTBS1 rename to UNDOTBS1_NEW;
Tablespace altered.

SQL> select distinct TABLESPACE_NAME from DBA_UNDO_EXTENTS;

TABLESPACE_NAME
---------------
UNDOTBS1_NEW
^^^^^^^^^^^^

▲メモリ上も変更されていますが、パラメータ情報は瞬時に変更されないよう
です。SPFILE指定になっているからでしょうけど。

SQL> select value from v$parameter where name = 'undo_tablespace';
VALUE