使用Attunity Oracle destination实现SQL Server到Oracle批量数据传输报错
SSIS 迁移SQL Server至Oracle(Attunity目标组件)报错排障方案
当前迁移链路为OLE DB Source对接SQL Server、Attunity Oracle Destination对接Oracle的批量同步场景,可按以下优先级定位解决报错:
- 组件版本匹配校验
- 核对Attunity Oracle Connector的安装版本与当前SSIS所在SQL Server大版本完全对应,32/64位运行时配置和系统安装的组件位数一致,禁止跨版本混用组件;版本不匹配时直接卸载现有组件,安装对应SQL Server版本的官方Attunity安装包。
- 列映射规则修正
- 打开数据流组件的列映射配置页,逐一校验源端、目标端列的类型匹配关系,重点排查三类高频报错点:
- SQL Server侧
nvarchar/nchar类型映射到Oracle侧varchar2/nvarchar2时,按字符长度而非字节长度匹配目标列定义,避免字节长度溢出导致报错 - SQL Server侧
datetime2/datetimeoffset类型映射到Oracle侧date/timestamp类型时,提前做精度截断,避免精度不兼容导致绑定失败 - 大值类型(
text/ntext/image)需显式转换为Oracle对应的CLOB/BLOB类型,禁止直接做默认绑定
- SQL Server侧
- 打开数据流组件的列映射配置页,逐一校验源端、目标端列的类型匹配关系,重点排查三类高频报错点:
- 批次参数调优
- 进入Attunity Oracle Destination的高级属性页,将
Rows per batch参数调整为500-2000区间,替换默认的超大批次值;同步将Commit size参数设置为和单批次行数一致,避免单次提交数据量过大触发Oracle端回滚段溢出中断。
- 进入Attunity Oracle Destination的高级属性页,将
- 数据库权限与连接校验
- 确认Attunity连接使用的Oracle账号,拥有目标表的插入权限、对应Schema下的临时表创建/删除权限;同时核对连接配置中使用的Oracle服务名是全局服务标识,而非本地实例名,保证TNS连通性正常。
补充说明:Attunity组件默认会在目标Schema下创建暂存临时表完成批量写入,账号缺少临时表操作权限时会直接导致流程中断,这是该组件最常见的报错诱因。
内容的提问来源于stack exchange,提问作者Rasika Dewangan
相关产品推荐
相关产品推荐

