2016-10-26 3 views
1

내 프로젝트는 기술 업그레이드를 거쳐 오라클 DB를 11g에서 12c로 업그레이드합니다. SAP DataServices가 버전 14.2.7.1156으로 업그레이드되었습니다.SAP DataServices - Oracle 12C 업그레이드 - Varchar (Byte)에서 Varchar (Char)

varchar (char) 일 때 Oracle 12C의 테이블은 기본적으로 varchar (byte)로 설정됩니다. 나는 이것이 정상적인 것임을 이해합니다. 그래서, 나는 VARCHAR (1), I는 오라클에서 새 테이블에 (즉, 东) 한자와 같은 유니 코드 문자를로드 할 수 있어요, 새 테이블을 만들 때

`ALTER session SET nls_length_semantics=CHAR;` 

를 실행하는 각 데이터 저장소에 대한 세션을 변경 .

그러나 동일한 유니 코드 문자를 SAPDS를 통해 동일한 테이블에로드하려고하면 'ORA-12899 - 값이 너무 커서 열'이라는 오류가 발생합니다. 내 데이터 저장소 설정은 다음과 같습니다

로케일

- 언어 : 기본적

-code 페이지 : UTF-8

- 서버 코드 페이지 : UTF-8

세션

- 추가 세션 매개 변수 :

`ALTER session SET nls_length_semantics=CHAR` 

오라클이 잘 작동하는 것 같아서 SAP BODS에서 어떤 설정을 변경해야하는지 정말 고맙게 생각합니다.

답변

0

나는 유니 코드 (UTF-8 형식) 데이터를 허용하고 ORA-12899을 피하기 위해 varchar2 (x BYTE)에서 varchar2 (x CHAR)로 테이블 열을 수정하는 것을 고려해야한다고 생각합니다.

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

alter table test1 modify name varchar2(100 char); 

-

select column_name, data_type, char_used from user_tab_columns where table_name='TEST1'; 
- 당신은 같은 각 열에 대해 'char_used'확인하실 수 있습니다