SQL Server迁移Oracle后,如何移除用户名/模式名中的数据库名?
解决SQL Developer迁移SQL Server到Oracle时模式名带数据库后缀的问题
迁移前配置调整(最优方案)
在启动迁移流程前,通过修改SQL Developer的模式映射规则,直接指定目标Oracle模式名:
- 打开SQL Developer的数据库迁移向导,进入「迁移项目配置」步骤
- 找到**模式映射(Schema Mapping)**设置模块
- 在映射列表中定位源SQL Server的
schmdw模式,将默认生成的目标Oracle模式名schmdw_AdvworksDW手动修改为schmdw - 保存配置后继续执行后续迁移步骤即可
已完成迁移后的补救操作
如果已经完成迁移,可通过重命名Oracle用户(Oracle中用户与模式一一对应)来修正:
- 先终止该用户的所有活跃会话(避免重命名失败):
-- 查询活跃会话 SELECT sid, serial# FROM v$session WHERE username = 'SCHMDW_ADVWORKSDW'; -- 杀掉会话(替换sid和serial#为查询结果) ALTER SYSTEM KILL SESSION 'sid,serial#';
- 执行用户重命名命令(Oracle用户名默认大写,需严格匹配):
ALTER USER SCHMDW_ADVWORKSDW RENAME TO SCHMDW;
- 验证对象所有者是否自动更新(重命名用户后,其名下对象的所有者会同步变更,可执行以下语句确认):
SELECT owner, object_name FROM all_objects WHERE owner = 'SCHMDW';
- 若存在硬编码引用原模式名的对象(如存储过程、同义词),需手动修改这些对象内的所有者名称。
内容的提问来源于stack exchange,提问作者Debarshi Bhattacharyya
相关产品推荐
相关产品推荐

