원인 : DB 생성할때 언어설정을 잘못해서 NLS_LANGUAGE 값을 따로 업데이트 했더니 꼬여서 발생하는 문제
상황 : PL/SQL Developer 에서는 별 문제 없었는데, 백업 문제로 DBMS_METADATA.GET_DDL 함수에서 에러가 발생
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-553: 알 수 없는 문자 집합 이름입니다
확인 :
을 실행하면 아래와 같이 VARCHAR2 의 CHARACTER_SET 이 중복으로 나오면 꼬인거라고 생각하면 됩니다.
CHARACTERSET TYPES_USED_IN
-----------------------------------------------------
US7ASCII VARCHAR2
AL16UTF16 VARCHAR2
해결 : sqlplus "/as sysdba" 로 접속
1. sql> shoutdown immediate; -- 데이터베이스 종료
2. sql> startup mount; -- 데이터 베이스 인스턴스 시작
3. sql> alter system enable restricted session; -- 제한된 세션 사용
4. sql> alter system set job_queue_processes=0; -- JOB을 생성할수 있는 프로세스 숫자 제한
5. sql> alter system set aq_tm_processes=0; -- 정확히 뭐하는건지 모름
6. sql> alter database open;
7. sql> col value new_value charset
8. sql> select value from nls_database_parameters where parameter='NLS_CHARACTERSET'; -- 캐릭터셋 을 변수에 저장
9. sql> col value new_value ncharset
10. sql> select value from nls_database_parameters where parameter='NLS_NCHAR_CHARACTERSET'; -- 네셔널 캐릭터셋 도 저장
11. sql> alter database character set internal_use &charset; -- 캐릭터셋 적용
12. sql> alter database national character set interanl_use &ncharset -- 네셔널 캐릭터셋 적용
13. sql> shoutdown immediate; -- 데이터베이스 종료
14. sql> startup; -- 데이터베이스 시작