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

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

服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com

  适用于: 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. 表空间是不是一个表空间组。