重命名表空间rename(非system)

时间:2021-09-08 10:36:34

Oracle9i或之前的版本:

1)        创建一个新的表空间

2)        将所有对象从原来的表空间拷贝到新创建的表空间中

3)        删除原来的表空间

Oracle 10g:直接使用重命名

将表空间test重命名为test1;

alter tablespace test1 rename to test11;

SQL> select TABLESPACE_NAME from user_tablespaces;
TABLESPACE_NAME
--------------------------------------------------------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TEST
7 rows selected.

SQL> alter tablespace test rename to test1;
Tablespace altered.

SQL> select TABLESPACE_NAME from user_tablespaces;
TABLESPACE_NAME
--------------------------------------------------------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TEST1

修改成功!

用户test原本的default tablespace是test,先查询其default tablespace:

SQL> conn test/test
Connected.
SQL> select username,default_tablespace from user_users;
USERNAME                                        DEFAULT_TABLESPACE
--------------------------------------------------------------------------------
TEST                                                    TEST1

(当重命名一个表空间时数据库会自动更新数据字典、控制文件以及数据文件头部中对该表空间的引用。在重命名表空间时,该表空间ID号并没有修改,如果该表空间是数据库默认表空间,那么重命名后仍然是数据库的默认表空间。)

     注意:

         不能重命名SYSTEM表空间和SYSAUX表空间。

         不能重命名处于脱机状态或部分数据文件处于脱机状态的表空间。


rename datafile:

数据文件重命名可以用两种方法:alter database和alter tablespace

两种方法的不同点是alter tablespace只能用于下面情况下的数据文件:不是SYSTEM表空间,不包含激活的回滚段,还有临时段,但是用alter tablespace可以在实例启动的时候来执行。而alter database则适应于任何的数据文件,但是数据库要在MOUNT状态下。

alter database方法步骤:

1)        关闭实例

2)        用操作系统命令重命名或者移动数据文件

3)        MOUNT数据库,然后用alter database来重命名文件,要写出全路径名

4)        启动实例

 connect sys/oracle as sysdba;

 startup mount;

 用操作系统命令重命名或者移动数据文件:

cp tes1t.dbf test.dbf

alter database rename file '/home/oracle/test/TEST/test1.dbf' to '/home/oracle/test/TEST/test.dbf';

 alter database open;

alter tablespace方法步骤:

1)        offline相应的表空间

2)        用操作系统命令重命名或者移动数据文件

3)        用alter tablespace命令来重命名数据库中的文件

4)        online表空间

connect sys/oracle as sysdba

alter tablespace test1 offline;

 用操作系统命令重命名或者移动数据文件:

cp test.dbf test1.dbf

rename 表空间:

alter tablespace test1 rename datafile '/home/oracle/test/TEST/test.dbf' to '/home/oracle/test/TEST/test1.dbf';

alter tablespace test1 online;