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

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


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

번호 제목 글쓴이 날짜 조회
열람중 오라클 캐릭터 셋 변경 M 최고의하루 01.12 3604
3104 간단한 sugest 기능 2 kkkkkkk 02.16 3604
3103 ABCUpload4와 MySQL4 13 김영철 01.29 3599
3102 업로드시 그림 파일명이 한글일경우 이름 자동 변경하기 13 김영철 01.14 3598
3101 이것은 AI파일 미리보기입니다. 댓글3 M 최고의하루 01.15 3595
3100 객체지향 프로그래밍(?)으로 무장한 PHP5 13 김영철 01.13 3585
3099 CD ISO 이미지로 추출하고 M 최고의하루 01.03 3584
3098 jpgraph사용법 13 김영철 01.14 3583
3097 [ ASP ] 최근 글에 New 표시하기 [ 최근 , 새글 , New , newDate() ] M 최고의하루 12.18 3581
3096 [ JS ] 버튼을 이용한 이미지 넘기기 ( 이미지 리스트 ) 99 단국강토 01.02 3580
3095 jpgraph 사용법 13 김영철 01.14 3576
3094 PHP 업로드진행바(Pregress Bar) 구현 13 김영철 01.14 3574
3093 오라클과 MSSQL 의 날짜 비교 13 김영철 01.24 3568
3092 mysql의 최대 성능 향상 방법 99 단국강토 01.05 3565
3091 이미지미리보기pds파일미리보기파일입니다^^ 99 단국강토 01.14 3565
3090 마우스 오른쪽 버튼막아 놓은 사이트에서 M 최고의하루 12.18 3565
3089 공유기 차단 무력화 시키는 법 99 단국강토 01.13 3565
3088 Micro Gradient Button 10 액션쟁이 12.30 3557
3087 리눅스 팁 13 김영철 01.29 3548
3086 c강좌 (20) 자기참조 구조체 13 김영철 01.29 3548
3085 Date Types_7_7_08 99 단국강토 01.12 3545
3084 [포토샵]종이 찢어진 효과 만들기 10 액션쟁이 01.13 3542
3083 sitemesh 를 활용하자 2 huro 01.15 3531
3082 포토샵/일러스트레이터 갑자기 한글입력 안될때 2 천진난만 02.20 3529
3081 포토샵 - 낡은 폴라로이드 효과 (낡은사진효과) 10 액션쟁이 01.21 3523
3080 최대공약수 최소공배수 구하기 13 김영철 01.15 3520
3079 iframe 대신 object 로 외부파일을 불러옵니다 99 단국강토 01.12 3516
3078 [mssql]성능 측정을 위한 설정 13 김영철 01.23 3516
3077 Modern stylish text 10 액션쟁이 12.30 3500
3076 MSSQL Server DBA 가이드-4 M 최고의하루 12.26 3497
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취