강의 컨설팅 트레이닝 무료진단 무료책자 마케팅편지 마케팅정보공유 다이어리 서비스제휴 고객센터

오라클 캐릭터 셋 변경
작성자 : M 최고의하루
등록날짜 : 2009.01.12 09:39
3,460
오라클 캐릭터 셋 변경


#################################################################################################################
# 오라클 캐릭터 셋 변경
#################################################################################################################
    update props$ set VALUE$='KO16KSC5601' where name='NLS_CHARACTERSET';
    update props$ set VALUE$='KOREAN' where name='NLS_LANGUAGE';
    update props$ set VALUE$='KOREA' where name='NLS_TERRITORY';
   
    이런것도.. 있군요.
    update props$ set VALUE$='UTF-8' where name='NLS_CHARACTERSET';
    update props$ set VALUE$='KO16MSWIN949' where name='NLS_CHARACTERSET';
   
#################################################################################################################
# 설정 확인
#################################################################################################################
    SELECT NAME,VALUE$ FROM PROPS$ WHERE NAME ='NLS_LANGUAGE' OR NAME ='NLS_TERRITORY' OR NAME ='NLS_CHARACTERSET';
       
        export NLS_LANG=KOREAN_KOREA.KO16KSC5601   <--- 추가


#################################################################################################################
# 캐릭터 셋 변경후에 발생한 에러 코드와 해결방법입니다.
# http://cafe.naver.com/happysharing.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=19
# 아래 내용데로 수행하여 해결하였습니다.
#################################################################################################################

EXP-00008: ORACLE 오류 6552가 발생했습니다
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-553: 알 수 없는 문자 집합 이름입니다


즉, 아래의 형태의 문제가 발생했을 경우

    Problem description
    ===================
    You receive the following error when (re)compiling or calling a piece of pl/sql:

    ORA-06550: line <num>, column <num>: ....
    or
    ORA-06552: PL/SQL: Compilation unit analysis terminated

    followed by
      
    ORA-06553: PLS-553: character set name is not recognized

이것은 export 시 발생할 수 도 있고, Catproc.sql를 실행하다가..또는 다른 경우에도 발생할 수 있는데

그 원인은 character set 이 섞였기 때문이다.

 

그럼..검증을 해보자 검증하려면 아래의 쿼리를 수행하고 그 결과를 보면 된다.

    select distinct(nls_charset_name(charsetid)) CHARACTERSET,
           decode(type#, 1, decode(charsetform, 1, 'VARCHAR2', 2, 'NVARCHAR2','UNKOWN'),
                         9, decode(charsetform, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'),
                        96, decode(charsetform, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),
                       112, decode(charsetform, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN
       from sys.col$ where charsetform in (1,2) and type# in (1, 9, 96, 112);

결과에서

CHARACTERSET                            TYPES_USED_IN
-----------------------------------------------------
AL16UTF16                               NCHAR
AL16UTF16                               NVARCHAR2
AL16UTF16                               NCLOB
AL32UTF8                                CHAR
AL32UTF8                                VARCHAR2
AL32UTF8                                CLOB


위처럼이 아니라

 

CHARACTERSET                            TYPES_USED_IN
-----------------------------------------------------
AL16UTF16                               NCHAR
AL16UTF16                               NVARCHAR2
AL16UTF16                               NCLOB
US7ASCII                                CHAR
US7ASCII                                VARCHAR2
WE8DEC                                  VARCHAR2
US7ASCII                                CLOB


이런 식으로 하나의 varchar2 에 대해 2개의 characterset 이 나온다면 mix 된 것이다.

 

이 문제에 대한 처리는 아래처럼 하도록 한다.

 

a) INIT.ORA 안에 있는 parallel_server parameter 가 false 거나 아예 세팅되어있지 않은지 확인한다
   SQL>show parameter parallel_server

b) 다음스크립트를 SQLPLUS 에서 "as sysdba"로 수행한다.
   (물론 백업을 해두는 것도 있지 말자!)

   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;
   -- yes, 2 times startup/shutdown . This is not a typo
   SHUTDOWN IMMEDIATE;
   STARTUP;

c) 만약 parallel_server parameter 를 고쳤다면 다시 원상복구한다.

 

This script doesn't change anything for the data that is already stored, but it
re-enforces database character set to be known in all places where it should be
stored

 

위 스크립트는 이미 저장된 데이터들을 바꾸지는 않는다. 단지 database 의 character set 을 그것이 저장되어지는 모든 장소에 다시 강제적으로 세팅할 뿐이다.
황용연(nseed99)     

 

"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기,
각종 광고, 영업, 판매, 제안서, 전단지
반응율 3배×10배 이상 높이는 마법의 8단계 공식"
자세히보기

Comments

번호 제목 글쓴이 날짜 조회
3015 APM에서 utf-8 구현 방법 13 김영철 01.14 2587
3014 utf-8 사용시 설정 - db의 입출력을 완벽하게 utf-8 13 김영철 01.14 2003
3013 PHP로 작동하는 RSS 읽는 함수 13 김영철 01.14 2078
3012 EditPlus V2.30 되면서 눈에띄는 달라진점 7가지 13 김영철 01.14 2350
열람중 오라클 캐릭터 셋 변경 M 최고의하루 01.12 3461
3010 체크박스 배열을 edit 수정페이지로 불러오기 M 최고의하루 01.12 3801
3009 config 배열. 99 단국강토 01.08 2517
3008 Rewrite 99 단국강토 01.08 3111
3007 특정폴더에서 파일을 이미지파일을 들고와서 선택시..이미지 변환 99 단국강토 01.07 3061
3006 book_shop 99 단국강토 01.07 2945
3005 Sub와 Function 차이점 99 단국강토 01.06 1887
3004 PUTTY Telnet , SSH 접속 프로그램 99 단국강토 01.06 3754
3003 VBScript 온라인 도움말 Ver 5.5 99 단국강토 01.05 3004
3002 스마택 Ver 0.2 ( 소스 자동 정렬 프로그램 ) 99 단국강토 01.05 2204
3001 # 제목을 입력하는 곳 (넓은 사이즈) M 최고의하루 01.03 2166
3000 Editplus v3.0 (문서 편집기) M 최고의하루 01.03 3074
2999 [ JSP ] 브라우저 인코딩이 자동으로 한글이 안되는 경우 해결법 99 단국강토 01.02 2860
2998 [ JS ] 버튼을 이용한 이미지 넘기기 ( 이미지 리스트 ) 99 단국강토 01.02 2878
2997 [AJAX] 자바스크립트에서 XML 파일 읽어 오기 99 단국강토 12.30 3156
2996 [AJAX] DOMDocument 에서 selectSingleNode 을 이용한 XML 노드 (Node) 찾기 99 단국강토 12.30 2988
2995 [ JS , AJAX ] DOM 크로스브라우징 : 원하는 노드 찾기 [ createDocument , DOMDocument ] M 최고의하루 12.26 2488
2994 외부링크 금지하는 방법 M 최고의하루 12.26 2139
2993 오늘 하루 창 열지 않기 M 최고의하루 12.24 3303
2992 DLL화일 레지스트리에 등록 또는 삭제 하기 M 최고의하루 12.24 3307
2991 팝업창 닫고 프레임이 있는 부모창에서 원하는 페이지로 이동하기 M 최고의하루 12.23 2913
2990 [펌] 제11강 - ADO(Active Database Object) - Database Access Component Cobol vs C#-2 M 최고의하루 12.23 2103
2989 [펌] 제11강 - ADO(Active Database Object) - Database Access Component Cobol vs C#-1 M 최고의하루 12.23 3979
2988 [펌] 제12강 - 방명록 만들기 I M 최고의하루 12.23 5324
2987 [펌] 제13강 - 방명록 만들기 II M 최고의하루 12.20 2385
2986 [펌] 제14강 - 방명록 만들기 III M 최고의하루 12.20 2497
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취