ORA-12705: invalid or unknown NLS parameter value specified (해결)

개발서버에서 잘 동작하는 솔루션 프로그램을 운영서버에 반영하에 테스트시 발생하는 에러

해결책 : 실행 쉘 상단 unset NLS_LANG 추가

굉장히 심플한 해결책이지만 3일정도 삽질했다… 에휴

[AS-IS]
#!/usr/bin/sh
DIR_HOME=”/app/~~~”

[TO-BE]
#!/usr/bin/sh
unset NLS_LANG
DIR_HOME=”/app/~~~”

 

———————————————————————————————————————————
삽질기록

환경 : AIX 5.3
어플리케이션 :  C
DB : ORACLE 10g

(1) 서버단에서 확인한 내용
env | grep LANG
[개발]
LANG=ko_KR
NLS_LANG=American_America.KO16ksc5601

[운영]
LANG=ko_KR
NLS_LANG=American_America.KO16ksc5601

딱히 다른게 없으며 설정도 잘 되어있음

(2) DB단에서 확인한 내용
SELECT * FROM SYS.PROPS$ WHERE NAME = ‘NLS_CHARACTERSET’;

쿼리 결과 모두 동일했지만  NLS_NCHAR_CHARACTERSET 만 달랐다
개발 : UTF8
운영 : AL16UTF16

흠…구글링해도 딱히 답이 안나온다

———————————————————————————————————————————

Advertisements

java.net.InetAddress.getLocalHost().getAddress() delay, slow

AIX 5.3
IBM JDK6 (64bit)

에서 동작하는 자바프로그램에서 위 메소드 실행하는 부분에서 약 5초가량의 지연이 발생

항상 발생하는 것이 아니고 비정기적? 이지만 꾸준히 발생함

삽질 고고

 

linux (java application) -> oracle Connection delay 현상

신규로 세팅한 linux (redhat 2.6.32) 버전에서 내부망에 있는 oracle로 db커넥션이 이상하게 30~40 초나 걸리는 현상이 발생하였다.

네트워크 방화벽을 의심했으나 tcpdump를 떠보니 신규로 세팅한 linux 서버쪽에서 db서버로 P flag에 해당하는 ack를 20초 이상 지연하여 응답하고 있었다.

jdk-1.7.80, jdk-1.6.45, jdk-1.6.31  등 여러버전으로 시도했으나 동일하게 지연이 발생

구글링을 하던도중 아래 글에서 해결책을 찾음

관련 URL : http://stackoverflow.com/questions/5503063/oracle-getconnection-slow

예전에 고객사에 납품한 솔루션 제품에서 어느날 갑자기 지연이 발생하여 2달가량 삽질하다가 당시에도 렌덤값을 구하는 엔트로피 머시깽이에서 지연이 발생했다란 것과 유사해보였다

 

동일한 에러에 대해 좀더 디테일하게 설명해준 글 주소http://opendatabase.tistory.com/entry/WAS-%EC%97%90%EC%84%9C-DB%EB%A1%9C-%EC%A0%91%EC%86%8D-%EB%B6%88%EA%B0%80-javasqlSQLRecoverableException-IO-Error-Connection-reset

20170517_0120170517_0320170517_04

 

[결론]

자바실행 쉘에 아래 옵션을 추가하니 해결되었다 (1.7, 1.6 에서 모두 동작함을 확인하였음)

-Djava.security.egd=file:/dev/./urandom

 

ORACLE SYSDATE 쿼리 수행 법

1.SYSDATE -> 20170101235959 형식의 텍스트를 구하는 방법 (24시간)

select to_char(sysdate, ‘YYYYMMDD HH24MISS’) from dual

2.SYSDATE에서 시간계산 하는 법

– SYSDATE + 1 : 하루 추가

– SYSDATE + 8/24 : 8시간 추가

참고url : http://www.orafaq.com/faq/how_does_one_add_a_day_hour_minute_second_to_a_date_value

20170113

에러기록

시간 부분 HH24 -> HH 로 쓴다면 12시간을 하루로 계산하게 됨…
select to_char(sysdate, ‘YYYYMMDD HHMISS’) from dual

IBM JAVA 다운로드 경로 & 설치 정보 페이지

구페이지

http://www.ibm.com/developerworks/java/jdk/

cap-2016-10-27-14-24-52-250

신페이지

https://developer.ibm.com/javasdk/downloads/

NEW_IBM_JAVA.PNG

 

IBM 자바 설치관련 공식정보 – 이거시 바이블… -ㅅ-;;

http://www.ibm.com/support/knowledgecenter/ko/SSYKE2_6.0.0/com.ibm.java.doc.user.aix32.60/user/aix_relocation.html

 

JAVA 컴파일 및 실행

LINUX 환경에서…

cd classes 한 후

#java 컴파일 (방법1)
/app/jdk/jdk1.7.0_80/bin/javac -d . -cp ../lib/*: /app/MINA-PROXY/src/org/apache/mina/proxy/*

#java 컴파일 (방법2)
/app/jdk/jdk1.7.0_80/bin/javac -Xlint -d . -cp ../lib/mina-core-2.0.13.jar:../lib/slf4j-api-1.7.21.jar: /app/MINA-PROXY/src/org/apache/mina/proxy/*

#실행실패
/app/jdk/jdk1.7.0_80/bin/java -Xms128m -Xmx256m -classpath .:./classes/org/apache/mina/proxy/*:./lib/*:./conf: org.apache.mina.proxy.Main

#정상실행 (방법1)
/app/jdk/jdk1.7.0_80/bin/java -Xms128m -Xmx256m -classpath .:./classes/:./lib/*:./conf: org.apache.mina.proxy.Main 8080 127.0.0.1 8021 30

#정상실행 (방법2)
/app/jdk/jdk1.7.0_80/bin/java -Xms128m -Xmx256m -cp .:./classes/:./lib/*:./conf: org.apache.mina.proxy.Main 8080 127.0.0.1 8021 30

 

실행시 classes 디렉토리이하에 있는 class 파일을 모두 적용하겠다고 아래처럼 * 를 넣으면 안된다.
/classes/: <– 이렇게 설정하면 된다.
-classpath .:./classes/*: