Unicode ORA-12899-升级到Oracle 12C时,列的值太大

Unicode ORA-12899-升级到Oracle 12C时,列的值太大,unicode,sap,oracle12c,sap-data-services,Unicode,Sap,Oracle12c,Sap Data Services,我的项目正在进行技术升级,因此我们正在将Oracle DB从11g升级到12c。SAP DataServices已升级至14.2.7.1156版 Oracle 12C中的表默认为varchar(byte),而它应该是varchar(char)。我知道这很正常。因此,我为运行的每个数据存储更改了会话 `ALTER session SET nls_length_semantics=CHAR;` 当我使用varchar(1)创建一个新表时,我能够加载unicode字符,比如汉字(即东) 从Oracl

我的项目正在进行技术升级,因此我们正在将Oracle DB从11g升级到12c。SAP DataServices已升级至14.2.7.1156版

Oracle 12C中的表默认为varchar(byte),而它应该是varchar(char)。我知道这很正常。因此,我为运行的每个数据存储更改了会话

`ALTER session SET nls_length_semantics=CHAR;`
当我使用varchar(1)创建一个新表时,我能够加载unicode字符,比如汉字(即东) 从Oracle导入新表

但是,当我尝试通过SAPDS将相同的unicode字符加载到同一个表中时,会出现错误“ORA-12899-值对于列来说太大”。我的数据存储设置为:

Locale
Language: default
Code Page: utf-8
Server code page: utf-8

Additional session parameters: 
ALTER session SET nls_length_semantics=CHAR

我真的很想知道在我的SAP BOD中需要更改什么设置,因为我的Oracle似乎工作得很好。

< P>我想,你应该考虑从VARCHAR2(X字节)到VARCHAR2(X CHAR)修改表列,以允许Unicode(UTF-8格式)数据,并避免<代码> ORA-12899 < /P>
create table test1 (name varchar2(100));
insert into test1 values ('east');
insert into test1 values ('东');

alter table test1 modify name varchar2(100 char);
--您可以为每个列选中“char\u used”,如-

select column_name, data_type, char_used  from user_tab_columns where table_name='TEST1';

我认为,您应该考虑从VARCHAR2(X字节)到VARCHAR2(X CHAR)修改表列,以允许Unicode(UTF-8格式)数据,并避免<代码> ORA-12899 < /P>

create table test1 (name varchar2(100));
insert into test1 values ('east');
insert into test1 values ('东');

alter table test1 modify name varchar2(100 char);
--您可以为每个列选中“char\u used”,如-

select column_name, data_type, char_used  from user_tab_columns where table_name='TEST1';