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;