오라클 ORA-06552, ORA-06553 오류가 발생했다.

2013. 3. 5. 11:42IT/Oracle

       ORA-06552: PL/SQL: Compilation unit analysis terminated
       ORA-06553: PLS-553: 알 수 없는 문자 집합 이름입니다


오라클 문자셋을 변경한 후에 어느 계정에서 이러한 오류가 발생했는데 접속하는데는 이상이 없지만 왠지 모를 찝찝함이 들었죠.

그래서 열심히 서칭!!!을 하다보니 어느 한 블로그에서 적당한 내용을 발견.


우선 발생한 이유는 ?

sys계정으로 문자셋을 변경을 했었는데 A라는 계정에서는 그것이 제대로 반영이 안되었던듯.

그래서, 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);

=============================================================================

솔직히 전 어찌 돌릴지도 모르겠고.. 영향은 안 끼치겠지만 영어 스펠링도 틀리고.. UNKOWN? 아마도 UNKNOWN이겠죠.(괜한 딴지걸기ㅠㅋ)

고로 과감히 이 단계는 패스!!!


실질적인 수정 단계로 곧장 진입함.

===================================================================

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;

===================================================================


여튼 중간의 COL로 시작하는 부분을 빼고 실행했음에도 불구하고 오류사항이 해결되었습니다.

이것도 구글링하면 있는 부분인 것 같지만 친절하게 설명을 달아주셔서 영어에 약한 미니츠에게

큰 도움을 주신 원 카피어께 감사의 말씀을.. 

그럼, 혹시 같은 문제로 고민하고 있으신 분들께도 도움이 되었기를 바랍니당 +_+ㅎㅎ


출처 : http://community.plusonnet.co.kr/?p=288

'IT > Oracle' 카테고리의 다른 글

[오라클] CONNECT BY 이용한 상위 부서 뽑기  (2) 2017.05.19
[오라클] 반기 구하는 쿼리  (0) 2017.04.28
오라클 11g -> 10g로 이관할 때.  (0) 2013.06.03