IT 일기장

[Oracle] sqldeveloper 중국어 일본어 깨짐 현상 본문

프로그래밍 언어/SQL(DB)

[Oracle] sqldeveloper 중국어 일본어 깨짐 현상

뽕슈 2021. 12. 9. 20:59
반응형

다국어 사이트를 만드는중에 중국어랑 일본어가 DB에서 깨지는 현상이 발견됐다

야근인가… 바로 생각이 들었는데 해결책은 있었다

 

# 1번째 방법

 

일단 현재 DB CHARACTERSET 속성을 봐야되는데 일단 조회해본다

SELECT * FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%';

 

내 컴퓨터의 경우 결과값은..

PARAMETER VALUE
NLS_CHARACTERSET         KO16MSWIN949
NLS_NCHAR_CHARACTERSET         AL16UTF16

 

NLS_CHARACTERSET AL32UTF8 변경해줘야된다

UPDATE sys.props$ SET value$='AL32UTF8' WHERE name='NLS_CHARACTERSET';

근데 이걸 sqldeveloper에서 실행하면 안된다 (권한이 충분하지 않다나 뭐라나)  

이건 SYSDBA 계정으로 접근해서 실행해야되는 쿼리인가 보다. 서버에 있는 sqlplus에 접속해서 다음과 같이 작업해줬다

 

SQL> UPDATE sys.props$ SET value$='AL32UTF8' WHERE name='NLS_CHARACTERSET';

1 행이 갱신되었습니다.

SQL> COMMIT;

커밋이 완료되었습니다.

SQL> shutdown immediate;

데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.

SQL> startup mount;
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area 6814535680 bytes
Fixed Size                  2188688 bytes
Variable Size            3539995248 bytes
Database Buffers         3254779904 bytes
Redo Buffers               17571840 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.

다시 위에 SELECT문 돌려서 확인해보면 바뀐 것을 있었는데.. 이번엔 한글이 깨졌다 ㅠㅠ

다시 원복하고 다른 방법을 찾아 헤매서

 

# 2번째 방법

 

개발환경에서 Tomcat의 Argument 설정하는 부분에 속성 추가해서 해결한 개발자가 있었다

-Doracle.jdbc.defaultNChar=true 
-Doracle.jdbc.convertNcharLiterals=true

 

이거 추가해주면 된다는데 테스트 해보니까 성공했다!! 야근 탈출~ 근데 이제 개발서버에 적용을 해야되는데

개발서버 환경은 또 JEUS라서 JEUSMain.xml 파일에다 추가해주고 재기동을 해보니 성공적으로 해결됐다

 

 

 

반응형
Comments