首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORA-12899 -升级到Oracle 12C时,值对于列太大

ORA-12899 -升级到Oracle 12C时,值对于列太大
EN

Stack Overflow用户
提问于 2016-10-26 20:23:34
回答 1查看 801关注 0票数 1

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

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

代码语言:javascript
复制
`ALTER session SET nls_length_semantics=CHAR;`

当我使用varchar (1)创建一个新表时,我能够将unicode字符(例如,东)从Oracle加载到新表中。

然而,当我试图通过SAPDS将相同的unicode字符加载到同一个表中时,它抛出了一个错误“ORA-12899-值对于列来说太大了”。我的数据存储区设置为:

代码语言:javascript
复制
Locale
Language: default
Code Page: utf-8
Server code page: utf-8

Additional session parameters: 
ALTER session SET nls_length_semantics=CHAR

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

EN

回答 1

Stack Overflow用户

发布于 2016-11-02 21:05:59

我认为,您应该考虑将表列从varchar2(x字节)修改为varchar2(x字符),以允许Unicode (UTF8格式)数据并避免ORA-12899

代码语言:javascript
复制
create table test1 (name varchar2(100));
insert into test1 values ('east');
insert into test1 values ('东');

alter table test1 modify name varchar2(100 char);

--您可以检查每个列的'char_used‘,如下所示-

代码语言:javascript
复制
select column_name, data_type, char_used  from user_tab_columns where table_name='TEST1';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40262226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档