Oracle 如何重命名表空间,并避免某些错误

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected]

 

适用于:

Oracle Database – Enterprise Edition –版本10.1.0.2到10.1.0.2 [Release 10.1]
本文信息适用于任何平台。
***18-May-2012 检查相关性***

目标

本文提供以下信息:

1. Rename Tablespace 特性
2. 在执行重命名表空间时的常见错误
3. 在重命名表空间时如何避免这些错误

解决方案

Rename Tablespace特性:
———————————————–

使用ALTER TABLESPACE 的RENAME TO子句,我们能重命名一个永久或临时表空间。当我们重命名一个表空间时,数据库更新数据字典,控制文件和(联机)数据文件头中对表空间名称的所有引用。数据库不更改表空间ID,所以如果这个表是,比如,一个用户的默认表空间,然后重命名表空间将在DBA_USERS视图中显示为用户的默认表空间。

重命名表空间时,遇到的错误示例:
—————————————————————————————–

以下将影响到该语句的操作:

– COMPATIBLE参数必须被设为10.0 或更高。
– 如果被重命名的表空间是SYSTEM或SYSAUX表空间,则它不会被重命名且会引起一个错误。

SQL> alter tablespace SYSAUX rename to SYSAUX1;
alter tablespace SYSAUX rename to SYSAUX1
*
ERROR at line 1:
ORA-13502: Cannot rename SYSAUX tablespace

SQL> alter tablespace system rename to system1;
alter tablespace system rename to system1
*
ERROR at line 1:
ORA-00712: cannot rename system tablespace

– 如果在表空间中的任意数据文件脱机,或如果表空间脱机,则表空间不会被重命名并引起一个错误。

SQL> alter tablespace users offline;
Tablespace altered.

SQL> alter tablespace users rename to users1;
alter tablespace users rename to users1
*
ERROR at line 1:
ORA-01135: file 4 accessed for DML/query is offline
ORA-01110: data file 4: ‘+SOMDG1/som10g/datafile/users.259.1’

– Alter 表空间联机,然后重命名它。

SQL> alter tablespace users online;
Tablespace altered.

SQL> alter tablespace users rename to users1;
Tablespace altered.

– 如果表是只读的,则数据文件头不被更新。这不应被认为是损坏;相反,它会导致一个信息被写入到警报日志,表明数据文件头未被重命名。数据字典和控制文件被更新。

SQL> alter tablespace users1 read only;
Tablespace altered.

SQL> alter tablespace users1 rename to users;
Tablespace altered.

SQL> alter tablespace users read write;
Tablespace altered.

– 如果表空间是默认的临时表空间,则在数据库属性表中相应的条目被更新且DATABASE_PROPERTIES视图显示新名称。

SQL> alter database som10g default temporary tablespace lmtemp3;
Database altered.

SQL> select * from database_properties where property_name like ‘%TABLESPACE’;

PROPERTY_NAME PROPERTY_VALUE
—————————— ——————————
DESCRIPTION
——————————————————————————–
DEFAULT_TEMP_TABLESPACE LMTEMP3
Name of default temporary tablespace

DEFAULT_PERMANENT_TABLESPACE USERS
Name of default permanent tablespace

SQL> alter tablespace lmtemp3 rename to lmtemp2;
Tablespace altered.

SQL> select * from database_properties where property_name like ‘%TABLESPACE’;

PROPERTY_NAME PROPERTY_VALUE
—————————— ——————————
DESCRIPTION
——————————————————————————–
DEFAULT_TEMP_TABLESPACE LMTEMP2
Name of default temporary tablespace

DEFAULT_PERMANENT_TABLESPACE USERS
Name of default permanent tablespace

– 重命名一个默认永久表空间。

SQL> alter tablespace users rename to users1;
Tablespace altered.

SQL> select name from v$tablespace;
NAME
——————————
SYSTEM
UNDOTBS1
SYSAUX
USERS1
TEMP
UNDOTEST
LMTEMP1
LMTEMP2

– 你不能重命名一个表空间组:

SQL> alter tablespace tempgrp1 rename to tempgrp;
alter tablespace tempgrp1 rename to tempgrp
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [tbsrnm_03], [7], [], [], [], [],
[], []
-如果表空间是一个UNDO表空间,且满足以下条件,则表空间名在服务器参数文件(SPFILE)中被更改为新的表空间名。

服务器参数文件用于启动数据库。

表空间名对任何实例被指定为UNDO_TABLESPACE 。

如果使用传统的初始化参数文件(PFILE),则一条消息被写入警报文件,表明初始化参数文件必须被手动更改。

SQL> alter tablespace undotest rename to undotest1;
Tablespace altered.

SQL> select name from v$tablespace;
NAME
——————————
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP
UNDOTEST1
LMTEMP

– 重命名在表空间组中的一个表空间:

SQL> alter tablespace lmtemp1 rename to lmtemp;
Tablespace altered.

SQL> select name from v$tablespace;
NAME
——————————
SYSTEM
UNDOTBS1
SYSAUX
USERS1
TEMP
UNDOTEST
LMTEMP
LMTEMP2

在重命名一个表空间时,如何避免错误:
————————————————————————

1. 表空间不是系统或SYSAUX表空间。
2. 表空间和它所有的数据文件都处于联机状态。
3. 检查alert.log中是否有其他消息。
4. 兼容参数必须被设为10.0或更高。
5. 表空间是不是一个表空间组。


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *