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

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


#################################################################################################################
# 오라클 캐릭터 셋 변경
#################################################################################################################
    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

번호 제목 글쓴이 날짜 조회
2835 [ JSP ] 브라우저 인코딩이 자동으로 한글이 안되는 경우 해결법 99 단국강토 01.02 3053
2834 여러객체를 for 문 돌리며 사용 99 단국강토 02.19 3052
2833 씬시티 영화 처럼 특정색 강조하기 10 액션쟁이 01.07 3050
2832 T-SQL: Parameter Sniffing 쿼리 튜닝 99 단국강토 01.05 3047
2831 SQL : 집계함수 : 집계함수. 13 김영철 01.23 3045
2830 vmware에 설치한 페도라코어5에 vmware tool 설치하기 99 단국강토 01.05 3045
2829 [AJAX] DOMDocument 에서 selectSingleNode 을 이용한 XML 노드 (Node) 찾기 99 단국강토 12.30 3045
2828 테그의 기본 99 단국강토 02.04 3043
2827 동영상 그림크기조절 99 단국강토 12.30 3042
2826 php전역변수 13 김영철 01.14 3041
2825 MSSQL 기본값 13 김영철 01.24 3040
2824 음악 태그 사운드 태그 댓글1 M 최고의하루 12.24 3039
2823 리눅스의 기본 명령어 99 단국강토 12.30 3039
열람중 오라클 캐릭터 셋 변경 M 최고의하루 01.12 3039
2821 DBMS에 따른 날짜포맷 변환 99 단국강토 01.07 3038
2820 포토샵-만화처럼 보이게 하기(신시티스타일) 10 액션쟁이 01.07 3035
2819 [CSS]스타일시트 {속성:값}의 모든 것 99 단국강토 02.03 3035
2818 MovieClip.attachMovie 99 단국강토 02.05 3034
2817 MySQL에서 외래키 설정하기 13 김영철 01.29 3034
2816 일본어로 된 웹을 한글로 즐기기 99 단국강토 01.06 3033
2815 <HTML TIP> 스크롤바, 링크주변 점선 제거, IFrame속성.. 99 단국강토 02.03 3030
2814 버튼 미디어 플래이어를 구현해 보자 99 단국강토 02.19 3030
2813 문자열중 숫자만 출력하기 13 김영철 01.14 3030
2812 php 파일 업, 다운로드 13 김영철 01.13 3028
2811 BLOCKQUOTE TAG 99 단국강토 01.20 3027
2810 php 대용량 메일 13 김영철 01.13 3027
2809 cascasde(연속동작) 13 김영철 01.23 3025
2808 E execCommand() 의 명령어 목록 | JavaScript 99 단국강토 01.30 3024
2807 [정보] EditPlus에서 BOM 문제 해결법 13 김영철 01.14 3024
2806 php 대용량 메일 13 김영철 01.13 3024
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취