본문 바로가기

Programming/Oracle

NLS DATE format

NLS_DATE_FORMAT에 대한 고려

==========================


NLS DATE format에 대한 처리는 system dynamic dictionary view인

v$nls_parameters에서 지정되어 있는 값에 의거해 처리되는데 이 view에 나타나는 value는 os user의 .profile에 지정된 NLS_LANG parameter 중 territory와 NLS_DATE_FORMAT, 그리고 initSID.ora의 NLS_LANG의 territory 또는 NLS_DATE_FORMAT 에 의거하여 결정된다.

여기서는 이들 환경 변수의 우선순위를 알아보자.


만일 NLS_LANG이 설정되지 않으면 다음으로 parameter file을 읽어서

이 value를 이용해 format을 설정합니다.

다음은 각 case별로 어떻게 value가 설정 되는지를 보여주는 test임.

(대표적으로 많이 사용되는 AMERICAN 과 KOREAN 두경우를 가지고 TEST함)

--------------------------------------------------------- 
initSID.ora NLS_LANG (.profile) V$NLS_PARAMETERS
---------------------------------------------------------
American American American
American Korean Korean
American null American
Korean Korean Korean
Korean American American
Korean null Korean
null null American
null not null(Korean) Korean
----------------------------------------------------------

(주1)initSID.ora에 지정되지 않으면 default는 American임.


(1).profile에 NLS_LANG=language_territory.characterset를

지정하고 NLS_DATE_FORMAT도 지정하면 NLS_DATE_FORMAT에서 지정해준 값으로 date format이 결정되나 만일 NLS_DATE_FORMAT을 미지정 시는 NLS_LANG의 TERRITORY의 default date format으로 결정된다.


(2).profile에 NLS_LANG을 지정하지 않고 NLS_DATE_FORMAT도 지정하지 않은 상태에서 initSID.ora에 NLS_DATE_FORMAT를 지정하면 지정한 지정값으로 나타나며 미지정 시는 sys.props$의 값으로 default date format을 구성한다.


이상의 test로 보면 다음과 같은 우선순위에 의거 date format이 구성됨을

알 수있다.


initSID.ora > .profile의 NLS_LANG > .profile의 NLS_DATE_FORMAT > alter session set