Oracle 11g 表空间重命名不需要脱机,但必须为 ONLINE 状态;仅普通表空间可重命名,SYSTEM/SYSAUX 及 OFFLINE 表空间禁止操作;语法为 ALTER TABLESPACE old_name RENAME TO new_name,不可加 SET 或引号。
Oracle 11g 表空间重命名是否需要脱机?
不需要脱机,但必须确保表空间状态为 online。oracle 11g 明确要求:只有 online 状态的普通表空间才允许重命名;offline、system 或 sysaux 表空间直接报错,且错误码不提示真实原因(例如报 ora-01109 或静默失败)。
验证当前状态:SELECT tablespace_name, status FROM dba_tablespaces WHERE tablespace_name = 'OLD_NAME';
结果中 status 必须是 ONLINE,否则先执行 ALTER TABLESPACE OLD_NAME ONLINE;
重命名语句的正确写法与常见拼写陷阱
唯一合法语法是:ALTER TABLESPACE old_name RENAME TO new_name; —— 注意三点:
- 不能加
SET(ALTER TABLESPACE old_name SET RENAME TO ...→ORA-00922) - 不能用引号包裹名称(
'old_name'或"OLD_NAME"→ORA-00959或找不到表空间) - 大小写不敏感,但若原名建时用了双引号强制大小写(如
"Old_Name"),则重命名时也必须严格匹配,否则报ORA-00959
重命名后哪些对象会自动更新?哪些不会?
重命名只改数据字典里的表空间名称,不影响任何物理文件或已有对象:
- 数据文件路径、文件名、内容完全不变
- 所有已存在的表、索引、LOB 段仍指向原数据文件,
dba_segments中的tablespace_name列会自动刷新为新名 - 用户默认表空间(
default_tablespace)、临时表空间(temporary_tablespace)字段不会自动更新,需手动执行ALTER USER ... DEFAULT TABLESPACE new_name; - 物化视图日志、分区表的子分区定义等依赖表空间名的地方,不自动适配,后续 DDL 可能因名称不匹配报错
重命名后最关键的验证步骤
别只信语句没报错,必须立刻查三处:
- 确认重命名生效:
SELECT tablespace_name FROM dba_tablespaces WHERE tablespace_name IN ('OLD_NAME', 'NEW_NAME');—— 原名应消失,新名应存在 - 检查对象归属:
SELECT owner, segment_name, segment_type FROM dba_segments WHERE tablespace_name = 'NEW_NAME' AND ROWNUM —— 确保有实际段落进来 - 验证用户默认设置:
SELECT username, default_tablespace FROM dba_users WHERE default_tablespace = 'OLD_NAME';—— 若有结果,说明这些用户建新表还会往旧名(已不存在)上写,必须立刻修正
最易被忽略的是最后一点:表空间重命名 ≠ 用户默认值更新,生产环境漏掉这步,第二天就可能收到 ORA-01950 报警。


















