重命名表空间

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;

表空间已更改。

7.表空间重命名,不会影响数据文件名,数据文件名保持不变

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值