오라클 캐릭터셋 변경

2010.07.30 17:22

조인상 조회 수:13491

원문 : http://www.ischo.net -- 조인상 // 시스템 엔지니어

Writer : http://www.ischo.net -- ischo // System Engineer in Replubic Of Korea

+++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어
출처 : http://database.sarang.net/?inc=read&aid=8187&criteria=oracle&subcrit=&id=&limit=20&keyword=ORA-12701&page=1


+++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
 

데이타베이스의 CHARACTER SET은 데이타 딕셔너리 테이블인 sys.props$에

들어 있다

 

SQL>desc sys.props$

Name Null? Type

------------------------------- ----------------- ---------------

NAME NOT NULL VARCHAR2(30)

VALUE$ VARCHAR2(2000)

COMMENT$ VARCHAR2(2000)

 

SQL>column c1 format a30

SQL>select name c1, value$ c1 from sys.props$;

 

C1 C1

----------------------------- ------------------------------

DICT.BASE 2

NLS_LANGUAGE AMERICAN

NLS_TERRITORY AMERICA

NLS_CURRENCY $

NLS_ISO_CURRENCY AMERICA

NLS_NUMERIC_CHARACTERS .,

NLS_DATE_FORMAT DD-MON-YY

NLS_DATE_LANGUAGE AMERICAN

NLS_CHARACTERSET US7ASCII

NLS_SORT BINARY

GLOBAL_DB_NAME NLSV7.WORLD

 

여기서 NLS_CHARACTERSET에 현재 DB의 CHARACTER SET이 들어 있는데 이 값을

변경하여 DB의 CHARACTER SET을 변경할 수 있다. 여기서는 US7ASCII에서

KO16KSC5601 로 옮기는 경우를 알아보자.

 

우선 바꾸고자 하는 CHRACTER SET이 지원되는 지를 다음 명령으로 확인한다.

 

select convert('a','KO16KSC5601','US7ASCII') from dual;

 

만약 이 Select 문에서 ORA-01482 에러가 발생하면 지정한 CHARACTER SET이

지원되지 않는 경우이며 에러가 발생하지 않으면 CHARACTER SET을 변경할 수

있다.

 

작업을 하기전에는 만약을 위해서 DB 전체를 백업 받아두도록 한다.

CHARACTER SET 을 잘못 변경하면 DB 를 OPEN 할수가 없기 때문이다.

---------------------------------------------------------------

 

1. 다음의 Update문을 실행하여 CHARACTER SET을 변경한다.

 

UPDATE sys.props$

SET value$ = 'KO16KSC5601'

WHERE name = 'NLS_CHARACTERSET';

 

Update 시에 NLS_CHARACTERSET을 지원되지 않는 값으로 잘못 설정하거나

실수로 콘트롤 문자 같은 것이 들어가게 되면 DB가 Shutdown 된 다음에는

Startup 이 안 되므로 Update 후에 다음 명령으로 확인을 한 다음에 Commit을

하도록 한다.

 

select name, value$

from sys.props$

where value$ = 'KO16KSC5601';

 

Select가 제대로 출력되면 Commit 하고 Shutdown 했다가 Startup 하게 되면

새로운 CHARACTER SET 값을 갖게 된다. SELECT가 안 되면 ROLLBACK하고 UPDATE

부터 다시 하도록 한다.

 

2. 환경 변수 NLS_LANG 을 변경한다.

 

.profile ( or .cshrc) 에서

 

NLS_LANG=American_America.KO16KSC5601; export NLS_LANG

 

or

 

setenv NLS_LANG American_America.KO16KSC5601

번호 제목 글쓴이 날짜 조회 수
115 exp error - ORA-19206: Invalid value for query or REF CURSOR parameter 조인상 2010.05.12 156647
114 centOS 5.2 에 오라클 10g 설치 조인상 2010.05.12 109931
113 오라클 온라인백업 스크립트 (ksh 용) [1] file 조인상 2010.05.12 100773
112 ORA-28040 : No matching authentication protocol 조인상 2014.11.13 67285
111 히든 파라미터 확인하는 쿼리 조인상 2010.05.12 62461
110 성능분석을 위한 v$sysstat, v$sesstat, v$system_event 조회 조인상 2011.09.27 50449
109 오라클 패치후 각 컴퍼넌트들 버전 확인 쿼리 조인상 2010.10.05 46338
108 exp실행시 에러. ORA-06512 SYS.DBMS_METADATA_INT 조인상 2010.05.12 32658
107 오라클 11g - ADR/ADRCI : 새로운 alertlog 위치 조인상 2011.05.17 29720
106 오라클에 접속하는 최대 인스턴스개수(세션개수)를 늘리는 방법 조인상 2010.05.12 24667
105 datafile, redolog, controlfile 위치 변경하기 조인상 2012.08.02 24625
104 일반유저에게 kill session 권한 주기 ischo 2019.08.12 22324
103 ORA-04063: package body "EXFSYS.DBMS_EXPFIL_EXP" has errors 조인상 2012.01.04 20766
102 온라인 백업방법 begin~end backup 조인상 2010.05.12 20679
101 windows용 오라클 온라인 백업 스크립트 file 조인상 2010.07.01 20143
100 SQL developer 실행시 jvm.dll 오류 발생 조치 방법 조인상 2013.01.23 19766
99 Oracle 설치문서에서 보는 ASM file 조인상 2012.03.30 19747
98 online backup(archive log mode) 조인상 2010.05.12 19439
97 ORA-01089 : 오라클 프로세스를 kill 한 후 로그인 못 할때 조인상 2010.06.20 19438
96 ORA-01555 : snapshot too old: rollback segment number %s with name \"%s\" too small ischo 2012.04.10 19266
서버에 요청 중입니다. 잠시만 기다려 주십시오...