Informatica can bind a LONG value only for insert into a LONG column Oracle

 Informatica实现etl同步表数据信息时 报:

Severity    Timestamp    Node    Thread    Message Code    Message
ERROR    2016/8/8 17:32:07    cnsz22vl0461_dev_oltp_01    WRITER_1_*_1    WRT_8229    Database errors occurred: 
ORA-01461: can bind a LONG value only for insert into a LONG column

Database driver error...
Function Name : Execute
SQL Stmt : INSERT INTO CBS_COS.TS_USER(USER_ID,USERNAME,PASSWORD,STATUS,USED_TM,UNUSED_TM,DEPT_ID,EMP_ID,TYPE_CODE,DATA_RIGHT_FLG,MODIFIED_TM,UPDATE_EMP,UPDATE_TM,CREATE_EMP,CREATE_TM,PWD_MODIFIED_TM,MODIFIED_EMP,VIP_WORKSHEET_TYPE,VIP_WORKSHEET_AREAS,VIP_OUT_WORK_SHEET_CUSTOMERS,HR_DUTY_NAME,USER_GROUP_NAME,VIP_WORK_SHEET_CUSTOMERS)  VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 
Oracle Fatal Error
Database driver error...
Function Name : Execute Multiple
SQL Stmt : INSERT INTO CBS_COS.TS_USER(USER_ID,USERNAME,PASSWORD,STATUS,USED_TM,UNUSED_TM,DEPT_ID,EMP_ID,TYPE_CODE,DATA_RIGHT_FLG,MODIFIED_TM,UPDATE_EMP,UPDATE_TM,CREATE_EMP,CREATE_TM,PWD_MODIFIED_TM,MODIFIED_EMP,VIP_WORKSHEET_TYPE,VIP_WORKSHEET_AREAS,VIP_OUT_WORK_SHEET_CUSTOMERS,HR_DUTY_NAME,USER_GROUP_NAME,VIP_WORK_SHEET_CUSTOMERS)  VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 
Oracle Fatal Error

但是我可以确认,两个表的 字段完全相同,而且任何值也未超长,但是为什么呢 ?

经排查原因如下

In a single session you can't insert/update data to table where more than 1 column has the data type as varchar2(2000) or varchar2(4000). Try splitting the sessions

即对Informatica来说你超过两千了 ,那么久的换一种处理方式来处理,要么截取,要么怎么找都行,但是你一样的设置长度为2000-4000 这样的字段来说都会报这个错,对oracle来说其支持,但是对Informatica来说就不支持了,警以为戒

然并卵,最后的解决方案如下:

检查目标数据库表的connection连接串信息的高级属性中是否有设置 勾选上N-Char support 的这个属性;

          如果没有,就请勾选N-Char support选项后,再到Designer重新导入并替换目标表表结构,保存刷新mapping/sessoin、执行workflow后看是否还出现这个问题;

    

最后成功解决。

原文地址:https://www.cnblogs.com/lianshan/p/5750759.html