NLS 파라메터 변경 문제
2022.05.27
등록된 파일이 없습니다.

정확한 응답을 위해 아래의 정보를 포함하여 질문을 작성해 주십시오.

 - 제품명 및 버전: orange 6.0 for oracle

 - DBMS 버전: 오라클 10g
 - DB Client 버전: 
 - OS 버전: 윈도우 10


 오렌지를 새로 설치한 후부터 예전에는 아무 문제가 없이 수행되던

select * from XXX where date > '20220525'

같은 SQL에서 ORA-01861 에러가 매우 빈번하게 발생하여 업무에 지장이 상당했습니다. 

그래서 여기 사이트에서 검색 결과 alter session 명령어로 값들을 수정하라고 되어있어 그대로 수정을 하면 쿼리수행이 문제없이 되긴합니다.

그런데 문제는 오렌지를 재가동시키면 다시 예전 설정으로 돌어가있어서 프로그램을 킬때마다 매번 

alter session 명령러를 수행해줘야합니다.

혹시 영구적으로 파라메타가 고정되게 하는 방법은 없나요?? 

  • 오렌지팀
    안녕하세요. 웨어밸리 오렌지팀입니다.

    NLS 파라미터 어떤 부분에 대한 것인지 명확하지 않으나,
    Server 와 Client 간의 초기 Connect 시에 설정 하는 경우,
    Orange option -> Common -> Environment 에서 NLS_LANG 값을 지정하실 수 있으며,
    설정된 LNS_LANG 값이 명확히 어떻게 설정되어있는지 확인 하셔야 합니다.
    말씀하신것처럼 20220525로 설정하시려 할 경우
    America로 시작하는 값이 아닌 Korea로 시작하는 값으로 변경해야 할 수 있으며,
    관련 설정 값에 대해서는 서버설정과 매칭하여 확인하여 주시기 바랍니다.
    그외에 Date Format 관련하여 common -> data -> Date/Time 포맷 또한 확인하시기 바랍니다.

    감사합니다.
    2022.05.30
  • 이규현
    말씀하신 작업은 다 했구요. 근데 그게 오렌지 킬때마다 초기화된다는 내용입니다. 내용 다시 한번 파악하시고 뎃글 달아주시면 감사하겠습니다.
    참고로 매번 수행하는 작업은 아래와 같습니다.
    alter session set nls_date_format = RR/MM/DD
    alter session set nls_date_language = KOREAN
    alter session set nls_iso_currency = KOREA
    alter session set nls_language = KOREAN
    alter session set nls_territory = KOREA
  • 오렌지팀
    안녕하세요. 웨어밸리 오렌지팀입니다.

    Orange Connection 창이나, Common->Environment 에서 NLS_LANG 값을 지정할 경우,
    오렌지는 응용프로그램 단에서 환경변수로 NLS_LANG 값을 입력하는 것으로 설정됩니다.

    다만 이 값은 Oracle Client 에 설정된 NLS_LANG 값이 없을 경우,
    참조하게 되며 각 클라이언트 별로 NLS_LANG 값이 설정되어 있을 경우,
    해당 값을 우선 참조하게 되어있습니다.

    즉, 레지스트리 편집기에서 봤을 때,
    64bit : 컴퓨터\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_[Oracle Home 명칭]
    32bit : 컴퓨터\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ORACLE\KEY_[Oracle Home 명칭]
    위의 키에서 NLS_LANG 값이 있을 경우 해당 값을 기준으로 NLS 값이 설정되며,
    해당 값이 없을 때에는 Orange Login 창 등에서 설정한 NLS_LANG 값을 참조하도록 되어있습니다.

    또한, Orange에서 접속시, 그에 해당하는 V$NLS_PARAMETER 의 NLS_PARAMETER 값들을,
    아래와 같이 Alter Session 구문으로 재실행이 됩니다.

    ALTER SESSION SET NLS_LANGUAGE=KOREAN
    NLS_TERRITORY=KOREA
    NLS_CURRENCY=\
    NLS_ISO_CURRENCY=KOREA
    NLS_NUMERIC_CHARACTERS=.,
    NLS_CALENDAR=GREGORIAN
    NLS_DATE_FORMAT=RR/MM/DD
    NLS_DATE_LANGUAGE=KOREAN
    NLS_SORT=BINARY
    (위 구문은 ORACLE_HOME의 NLS_LANG 값이 “KOREAN_KOREA.KO16MSWIN949” 일경우, 실행되는 구문입니다.)

    현재로서는 해당하는 NLS 파라미터 값이 직접 Alter Session 하기전의 값을 확인하시기 바랍니다.
    또한 Registry 에서 각 Oracle Client 의 Home 에 설정된 NLS_LANG 값에 대해 확인이 필요하겠습니다.

    Orange Board 게시글은 알람이 전해지나, 댓글은 알람이 전해지지 않습니다.
    빠른 답변이 필요하다면 메일로 전달된 주소로 리턴메일로 보내주시기 바랍니다.

    감사합니다.
    2022.05.31
  • 이규현
    말씀해주신 레지스트리 등 확인해 보겠습니다. 감사합니다!!