증상 :
터미널이나 기타 툴을 이용해서 로그인을 하면 로그인은 되지만 한글관련해서는 깨져서 나옴.
select * from v$nls_parameters;
기존 오라클 서버의 NLS_CHARACTERSET이 WE8MSWIN1252로 설정되어 있었다.
우선
select convert('a', 'WE8MSWIN1252', 'AL32UTF8') from dual;
로 변경 가능한 character set인지 확인한다.
이상없으면 DBA 권한으로
update sys.props$ set value$ = 'AL32UTF8' where name = 'NLS_CHARACTERSET'
쿼리를 실행시킨다. 이때 잘못된 값을 넣게 되면 oracle 자체가 구동이 안될 수 도 있기 때문에 commit 전에 select로 꼭 확인을 해야한다.
update props$ set value$='AL32UTF8' where name='NLS_NCHAR_CHARACTERSET';
확인.
select * from sys.props$ where name='NLS_NCHAR_CHARACTERSET';
오라클 재 가동후에 이런 증상이 나왔다.
SQLPLUS 로 로그인하면 정상적으로 로그인되는데 sqldeveloper에서 로그인하려면
ORA-06552: PS/SQL: Compilation unit analysis terminated ORA-06553: PLS-553: character set name is not recognized
위의 에러가발생하면서 로그인은 정상적으로 된다.
이때 작업 할 내용은 다음 쿼리를 실행 DBA 로 실행한다.
SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER SYSTEM ENABLE RESTRICTED SESSION; ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; ALTER SYSTEM SET AQ_TM_PROCESSES=0; ALTER DATABASE OPEN; COL VALUE NEW_VALUE CHARSET SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET'; COL VALUE NEW_VALUE NCHARSET SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET'; ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET; ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET; SHUTDOWN IMMEDIATE; STARTUP; SHUTDOWN IMMEDIATE; STARTUP;
sqldevelopment 재 시작 한 후에는 오라클 에러나 한글이 깨지지 않고 정상적으로 사용 가능하다.
참조 url : http://database.sarange.net/
댓글 없음:
댓글 쓰기