DB서버 이전 후 스크립트 오작동 문의 0 2 1,459

by Daff [DB 기타] [2017.07.12 10:41:52]


회사 DB서버를 이전했는데 몇년간 멀쩡하던 스크립트가 여기저기? 오작동하는것 같아서 질문드립니다

문제는 지금은 해결이 되었는데, DBA가 뭘 고쳤는지 숨기는거 같아서 답답해서 올려봅니다, 저는 일개 스크립트짜는 프로세스만 아는지라 ㅜㅜ

비과학적이고 비논리적인 질문이라.. 뭔가 느낌적인 느낌으로 답을 아시는 DBA분이 계시면 감사하겠고, 아니라면 기다리다가 질문삭제하겠습니다..

아래는 드문드문 짤라놓은 에러예시입니다, 에러나는 부분이 각각이라 처음엔 단순오류인줄 알았는데 어쩌면 환경? 문제인거 같기도하고,,

 

임포트하다가 에러

DECODE(GUBUN,'1','산',NULL)

에러=>ORA-12899: value too large for column GUBUN" (actual: 3, maximum: 2), '산'이 들어가는 필드구조 2바이트인데 인서트할때 에러남, 찾아보니 인코딩문제로 나오긴 하던데요, 완성형조합형따라 3바이트 2바이트 그런식으로,,

 

뷰 만든 값 에러

CREATE OR REPLACE VIEW V_Addr
As
SELECT DISTINCT Hcode,,,등등 (DECODE(LAW_SIGUNGU,'땡땡자치시','',LAW_SIGUNGU)) FROM &1\_등등
WHERE FLAG IN (등등);

에러=> 이 뷰만드는 문구에서 아래 셀렉트문 만 실행하면 정상데이터가 출력되는데(땡땡자치시이면 Null로 하라고 디코드한대로), Create or Replace view문구로 만든 뷰에는 값이 잘못 들어가 있었어요, (Null아니고 기존값이 들어감),  어차피 셀렉트해서 뷰를 만드는건데, 유령도 아니고.. 몇년간 문제없던 코드에요

 

함수있는 쿼리 실행한 값에 에러

CASE WHEN A.CODE IN (등등코드)
         THEN trim(ename||' '||F_RP_ETCInout_Dic_U(DECODE(D.INOUT,'진입',NULL,'입구',NULL,D.INOUT)))

에러=> 조건절로 만든 값에, 없던 공백값이 포함되고.. 이것도 몇년간 문제없던 코드요

 

아, 그리고 터미널 아웃되는 로그를 스풀로 따로 빼는데

스풀 로그가 영문이었는데 오늘 다시돌린거 보니 한글로 나오더라구요,

DB서버에서 바꾼건지,, 제가돌린 윈도우클라이언트에서는 바꾼게 없거든요, 리눅스클라이언트에서 테스트로 돌릴때도 영문으로 나왔고,,

 

by 미생 [2017.07.12 12:56:25]

캐릭터셋 일치 안시킨것 같습니다. 이관전이랑 이관 후 디비에서

select * from v$nls_parameters where parameter='NLS_CHARACTERSET'; 

쳐 보세요 아마 이관전이 KO16KSC5601 아니면  KO16MSWIN949 엿는데 새로 옮긴데는 UTF-8 이라거나 하면 나오는 에러로 보입니다.

일단 캐릭터셋이랑 버전 확인 한번 해보심이 좋을것 같습니다.


by Daff [2017.07.12 13:19:47]

제가 젤 처음 물어본게 그거였어요, characterset 확인해달라고, 

SELECT * FROM sys.propS$ WHERE NAME LIKE 'NLS_CHARACTERSET'

그리고 답변온게 이거였구요,,,  KO16MSWIN949 라고.. 

SQL> SELECT * FROM sys.propS$ WHERE NAME LIKE 'NLS_CHARACTERSET';
NAME  VALUE$  COMMENT$
NLS_CHARACTERSET KO16MSWIN949 Character set

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입