Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1117902
  • 博文数量: 231
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 2662
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-03 16:35
个人简介

学无止境

文章分类

全部博文(231)

文章存档

2014年(7)

2013年(103)

2011年(11)

2010年(53)

2009年(57)

分类: 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;

表空间已更改。

阅读(4051) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~