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

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


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

번호 제목 글쓴이 날짜 조회
3195 바탕화면 아이콘 변경 M 최고의하루 12.23 4063
3194 오라클(Oracle) 날짜 관련 함수 정리 13 김영철 01.23 4061
3193 innerTEXT와 innerHTML의 유용함 99 단국강토 02.09 4050
3192 각종 확장자 파일 M 최고의하루 12.24 4032
열람중 오라클 캐릭터 셋 변경 M 최고의하루 01.12 4029
3190 이것은 AI파일 미리보기입니다. 댓글2 M 최고의하루 01.15 4029
3189 Ajax 간단한 예제(우편번호검색) 13 김영철 01.29 4021
3188 포토샵으로 털그리기 10 액션쟁이 01.02 4020
3187 php 설치관련 문의내용 정리 13 김영철 01.14 4015
3186 vb 마우스휠 2 아론k 06.24 4014
3185 UltraWebGrid Tips 99 단국강토 01.13 4009
3184 PHP 답변형 게시판 / 자료실 /PHP강좌 13 김영철 01.13 3994
3183 [펌] 제11강 - ADO(Active Database Object) - Database Access Component Cobol vs C#-1 M 최고의하루 12.23 3985
3182 엑셀형식 가계부 3종 댓글2 2 비비드바비 04.29 3960
3181 Windows Server 2003 에서 IIS 6 + PHP 4.3.2 설정법 M 최고의하루 12.19 3959
3180 간편 스크롤캡쳐프로그램!!!! 2 무라사키 02.17 3953
3179 rsync윈도우에서 리눅스로 백업하기 13 김영철 01.29 3952
3178 award bios 어워드 바이오스 설정법 M 최고의하루 12.18 3943
3177 아쿠아버튼 M 최고의하루 12.20 3937
3176 innerText, outerText, innerHTML, outerHTML 99 단국강토 01.06 3937
3175 ScriptX 프린트 13 김영철 01.15 3932
3174 table,tr,td 의 innerHTML 속성으로 좀 가꾸놀기 99 단국강토 02.09 3923
3173 원격데스크톱 연결 (XP) M 최고의하루 12.20 3923
3172 MSSQL 내장 함수 목록 99 단국강토 01.03 3920
3171 꽤 괜찮다; - MMF 변환 프로그램 M 최고의하루 12.18 3920
3170 MSSQL 기본 접속 포트 1433 변경 및 서버 alias 사용 99 단국강토 01.07 3908
3169 AJAX 관련 새로운 url 정리 13 김영철 01.29 3908
3168 frame, iframe에서 쿠키, 세션 인증(로그인) 처리 안 될 때 해결 방법 13 김영철 01.14 3905
3167 네이트온글꼴바꾸기 댓글1 17 미니 04.27 3901
3166 Window에서 4G 이상의 메모리가 인식이 안될때 17 vane 12.27 3876
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취