同系统使用SQL Developer迁移SQL Server数据库至Oracle失败
故障排查与解决
触发该报错的核心原因有两点:
- 执行的授权语句不符合Oracle 19c语法规范,语句实际未执行成功
- SQL Developer 19.2版本迁移前置校验需要的权限,和旧版本授权逻辑不匹配
修复步骤
- 用SYS as SYSDBA身份登录Oracle实例,先清理之前错误配置的用户:
DROP USER MyCon CASCADE;
提示:如果提示用户不存在可忽略该报错,直接执行后续语句。
- 按19c规范创建迁移用户并分配表空间权限:
CREATE USER MyCon IDENTIFIED BY "你的连接密码" DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP; ALTER USER MyCon QUOTA UNLIMITED ON USERS;
注意:你之前使用的GRANT ALL PRIVILEGES to {migration-name} identified by {migration-name};是Oracle 11g及更早版本的非标准语法,12c及之后版本已彻底废弃,且语句中{migration-name}是占位符,未替换为实际用户名MyCon,这条语句执行会直接报语法错误,根本没有完成授权操作。
- 给迁移用户授予SQL Developer迁移所需的全部必要权限,不要仅授予ALL PRIVILEGES(19c中该权限集合不包含数据字典读取、数据泵操作等迁移校验必需的权限):
GRANT CREATE SESSION, CONNECT, RESOURCE, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE PROCEDURE, CREATE TRIGGER, CREATE TYPE, CREATE MATERIALIZED VIEW, ALTER SESSION, SELECT ANY DICTIONARY, DATAPUMP_EXP_FULL_DATABASE, DATAPUMP_IMP_FULL_DATABASE TO MyCon;
- 打开SQL Developer检查两端连接配置:
- SQL Server连接确认已启用TCP/IP协议,连接账号对test3库有public读取权限
- 新建MyCon用户的Oracle连接时,连接角色选择Normal,使用内置的19c版本JDBC驱动,不要手动替换第三方ojdbc包
- 重新启动迁移向导时,取消勾选"自动创建迁移用户"选项,手动选择已配置好的MyCon连接即可,不会再在密码输入步骤前触发校验报错。
内容的提问来源于stack exchange,提问作者henrry
相关产品推荐
相关产品推荐

