学无止境
分类: Oracle
2013-09-24 16:13:13
oracle10g起可以重命名表空间,这个特性使得重名冲突下传输表空间变得简单,ORACLE还会智能的完成配套修改工作,例如修改数据库或用户的默认表空间,修改默认的UNDO表空间,spfile也会发生对应的变化。重命名表空间的开销很小,几乎是瞬间完成的。
1.重命名用户默认表空间
SQL> select username,default_tablespace,temporary_tablespace from dba_users where username='LDY';
USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
------------------------------ ------------------------------ ------------------------------
LDY LDYTBS TEMP
SQL> alter tablespace LDYTBS rename to LDYTBS_NEW;
表空间已更改。
SQL> select username,default_tablespace,temporary_tablespace from dba_users where username='LDY';
USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
------------------------------ ------------------------------ ------------------------------
LDY LDYTBS_NEW TEMP
重命名表空间的动作在alert log中有记录
Tue Sep 24 15:29:35 2013
Tablespace 'LDYTBS' is renamed to 'LDYTBS_NEW'.
Completed: alter tablespace LDYTBS rename to LDYTBS_NEW
2.重命名用户默认临时表空间
SQL> alter tablespace TEMP rename to TEMP_NEW;
表空间已更改。
SQL> select username,default_tablespace,temporary_tablespace from dba_users where username='LDY';
USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
------------------------------ ------------------------------ ------------------------------
LDY LDYTBS_NEW TEMP_NEW
3.重命名系统UNDO表空间
SQL> show parameter undo_tablespace
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace string UNDOTBS1
SQL> alter tablespace UNDOTBS1 rename to UNDOTBS;
表空间已更改。
SQL> show parameter undo_tablespace
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace string UNDOTBS1
系统UNDO表空间重命名之后会修改spfile,但不会在数据库动态系统视图中体现出来,使用文本编辑器打开spfile发现在文件中已修改
*.undo_tablespace='UNDOTBS'
这时如果继续修改undo_tablespace参数为之前的表空间,将会报错
SQL> alter system set undo_tablespace='UNDOTBS1';
alter system set undo_tablespace='UNDOTBS1'
*
第 1 行出现错误:
ORA-02097: 无法修改参数, 因为指定的值无效
ORA-30012: 还原表空间 'UNDOTBS1' 不存在或类型不正确
修改为重命名之后的名称成功。
SQL> alter system set undo_tablespace='UNDOTBS';
系统已更改。
4.不能重命名系统表空间
SQL> alter tablespace SYSTEM rename to SYSTEM_NEW;
alter tablespace SYSTEM rename to SYSTEM_NEW
*
第 1 行出现错误:
ORA-00712: 不能重命名系统表空间
SQL> alter tablespace SYSAUX rename to SYSAUX_NEW;
alter tablespace SYSAUX rename to SYSAUX_NEW
*
第 1 行出现错误:
ORA-13502: 不能重命名 SYSAUX 表空间
5.不能重命名offline的表空间
SQL> alter tablespace ldytbs_new offline;
表空间已更改。
SQL> alter tablespace LDYTBS_NEW rename to LDYTBS;
alter tablespace LDYTBS_NEW rename to LDYTBS
*
第 1 行出现错误:
ORA-01135: DML/query 访问的文件 5 处于脱机状态
ORA-01110: 数据文件 5: 'E:\ORACLE\ORADATA\LDYTBS_DATA_D-ORA10G_I-4104893635_TS-LDYTBS_FNO-5_1ONPPIJG'
6.可以重命名read only表空间
SQL> alter tablespace LDYTBS_NEW online;
表空间已更改。
SQL> alter tablespace LDYTBS_NEW read only;
表空间已更改。
SQL> alter tablespace LDYTBS_NEW rename to LDYTBS;
表空间已更改。