제가 아는 범위에서,, 과거에는, DB charterset 이 유니코드 지원을 못하는 경우
- 타 DB 와의 연동,, 전사표준 등 사유로,,, NLS CHARTERSET 이 만약 KO16MSWIN949 로 설정했다면
한글을 2 byte 로 처리하면서 varchar2() 같은 경우,, order by 만으로 한글정렬을 할 때 문제가 생기거나, 다국어를 입력할 수 없는 문제등이 발생됩니다.
이런 경우에, 이를 보완하기 위해서, Oracle 은 2번째 Charterset 인 national Charterset 을 지정할 수 있고, n 이 붙은 데이터 타입 ( ex nchar() ,, ) 을 사용하면 2번재 캐릭터셋인 national charterset 을 통해, 지원하지 어려운 데이터를 처리할 수 있게 했습니다.
- 보통은 UTF8 혹은,, AL16UTF8, AL32UTF8 등으로 지정
....... 과거에는요...
지금은 DB Charterset 을 대부분 유니코드 지원되는 UTF8 등으로 지정한 지 ,,, 꽤 되었고, 따라서 다국어를 지원해야 하는 글로벌 회사들도 national charterset 사용이 거의 없다고 알고 있습니다.
기본 NLS Charterset 만으로 한글 처리 등에 문제가 없다면,, N타입은 사용하지 않아도 될 것 같습니다.