[oracle] sqlplus 한글 깨짐 현상 문제
업무이야기|2010.04.06 10:15
방법1 >>> 윈도우7 사용자 추천
오라클 클라이언트를 설치 하고 나서 오렌지를 실행하니 테이블 컬럼상 한글이 깨진걸 확인.
검색 결과 다음과 같이 해결 하였다.
검색 결과 다음과 같이 해결 하였다.
- 한글깨짐
select문으로 확인해보면
한글이 ??? 같은 물음표로 나온다면 다음과 같이 설정
한글이 ??? 같은 물음표로 나온다면 다음과 같이 설정
윈도우 계열은
시스템 등록정보 -> 고급 -> 환경변수(N)에 다음 추가
시스템 등록정보 -> 고급 -> 환경변수(N)에 다음 추가
NLS_LANG
AMERICAN_AMERICA.KO16KSC5601
or
NLS_LANG
or
NLS_LANG
KOREAN_KOREA.KO16KSC5601
유닉스 계열은
export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601
(계속 등록해보려면 .profile 수정)
(계속 등록해보려면 .profile 수정)
- TNSNAMES.ORA 설정파일 예제
tnsnames.ora파일은 다음과 같은 형식
TNS이름 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 아이피)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = 에스아이디 혹은 네임)
)
)
tnsnames.ora파일은 다음과 같은 형식
TNS이름 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 아이피)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = 에스아이디 혹은 네임)
)
)
- 필수 환경변수 관련 내용들
TNS_ADMIN=tnsnames.ora가있는폴더
예: TNS_ADMIN=C:\instantclient_11
TNS_ADMIN=tnsnames.ora가있는폴더
예: TNS_ADMIN=C:\instantclient_11
ORACLE_HOME=오라클이깔린폴더
예: ORACLE_HOME=C:\instantclient_11
예: ORACLE_HOME=C:\instantclient_11
대충 이정도면 오라클클라이언트로 select문으로 확인가능한 정도 사용가능
sqlplus같은경우는 path에 해당폴더를 추가해 두면 편함
sqlplus같은경우는 path에 해당폴더를 추가해 두면 편함
sqlplus를 통한 접속방법은 $sqlplus id/pass@TNS명
방법2
SQL> select * from nls_database_parameters;
PARAMETER VALUE
------------------------------ ----------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICANLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET KO16KSC5601
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 11.1.0.6.0
------------------------------ ----------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICANLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET KO16KSC5601
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 11.1.0.6.0
이제 클라이언트를 종료하고 레지스트리 편집기(윈도우-실행에 regedit 입력)를 연다.
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 에 있는 NLS_LANG 의 편집창을 연다.
없다면 새로 생성 해서 수정 하여 아래의 값을 입력한다
위와 같은 예일 경우 AMERICAN_AMERICA.KO16KSC5601 을 입력한다.
이제 오라클에 접속하여 확인 하면 끝.. 참 쉽죠잉~
---------------------------------------------------------------------------
오라클 한글깨짐 문제 처리법입니다.
원인은 오라클의 서버와 클라이언트간의 NLS_LANG설정문제 때문입니다.
이것을 일치시켜 주어야 하는데.
Step by Step.
시작 -> 실행
regedit으로 레지스트리 편집기를 열고, " HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ "의 하위 폴더에보면 자신의 오라클베이스폴더가 있습니다. 그것을 클릭해보면 NLS_LANG키가 있는데. 키값을 KOREAN_KOREA.KO16MSWIN949 KOREAN_KOREA.KO16KSC5601 로 바꿔줍니다.
레지스트리편집기를 끈후 다시 시작 -> 실행
cmd로 커맨드입력창을 하나 띄웁니다.
sqlplus /nolog
conn /as sysdba;
update props$ set VALUE$='KO16MSWIN949' where name='NLS_CHARACTERSET';
commit;
shutdown immediate;(데이터베이스를 언마운트 하는작업이라 시간이 걸립니다.)
startup;
하시고 해당 테이블을 조회해 보시면 됩니다.
참고로 조회했는데 한글이 역시나 깨져보인다면 리부팅은 센스!!! 100% 해결될 것입니다.
------------------------------------------------------------------------------------------------------
방법3
NLS_LANGUAGE :데이터 베이스에서 메세지를 보여줄때의 메세지 언어 설정이다 AMERICAN 되여있다
NLS_TERRITORY :금액을 표시 할때 날짜를 표현할때 표현 방법이다
AMERIC 방식은 금액은 "$" 날짜는 DD-MON-YY 형식이고
한글 방식은 :금액은"//" (원) 표시 날짜는 YYYY-MM-DD 형식으로 보여준다
NLS_CHARACTERSET :데이블명 컬럼명을 한글로 사용할수있다 컬럼의 데이터는 정의 된 값과 상관없이 한글입력이 가능하다
NLS_TERRITORY :금액을 표시 할때 날짜를 표현할때 표현 방법이다
AMERIC 방식은 금액은 "$" 날짜는 DD-MON-YY 형식이고
한글 방식은 :금액은"//" (원) 표시 날짜는 YYYY-MM-DD 형식으로 보여준다
NLS_CHARACTERSET :데이블명 컬럼명을 한글로 사용할수있다 컬럼의 데이터는 정의 된 값과 상관없이 한글입력이 가능하다
좋은 정보 감사합니다. ^^
답글삭제감사합니다~^^
답글삭제감사합니다 덕분에 잘 해결 되었어요^^
답글삭제감사합니다 덕분에 잘 해결 되었어요^^
답글삭제