이것은 일부 레거시 Java 응용 프로그램 (HP-UX의 경우 jre1.4)에서 나타납니다.Java 프로세스에서 환경 변수 (NLS_LANG) 값이 변경 되었습니까?
부모 프로세스 (셸 스크립트 S1)가 자체적으로 하위 프로세스 (셸 스크립트 S2)를 시작하는 Java 프로세스를 시작합니다. 개략적으로 그것은 S1> Java> S2입니다.
NB! Java 응용 프로그램은 OCI 드라이버를 사용하여 Oracle DB에 연결합니다.
Runtime.getRuntime().exec(cmd);
과 S2는 NLS_LANG
가 american_america.UTF8
은 여기에서 이상한 것은 자바가 사용 S2를 생성합니다, S1을 실행하는 프로세스가 american_america.BLT8MSWIN1257
에 환경 변수 NLS_LANG
세트를 가지고있다
이것은 일부 제한된 액세스 환경 (프로덕션)에서 발생합니다. Linux에서 동일한 문제를 jre 1.5로 재현 할 수 없었습니다.
AFAIK, Java 프로세스는 해당 병렬 (S1)에서 환경을 상속해야하며 모든 환경 변수를 자식 S2 (단일 인수 exec
호출이 사용되었으므로)로 전달해야합니다. 그러나 그것은 그럴 듯하지 않습니다. NLS_LANG
이 변경된 것으로 보이는 이유는 무엇입니까?
지금 당장이 항목을 선택할 수는 없지만 DB 트리거를 사용하여 유닉스 프로세스 환경을 어떻게 변경할 수 있는지 설명해 주시겠습니까? – Ralkie
불분명하다면 유감입니다. Unix 환경 변수는 수정되지 않지만 Oracle 세션의 컨텍스트 내에서 NLS_LANG 매개 변수를 수정할 수 있습니다. 호출 프로세스에서 상속되거나 클라이언트에 의해 모든 경우에 설정되거나 데이터베이스 트리거에 의해 무시 될 수 있습니다. –