### 캐릭터셋 변경전 확인 사항 :
sqlplus '/as sysdba'
sql>select instance from v$thread;
INSTANCE
----------------
ora9i
oracle\ora92\network\admin\snmp_ro.ora 를 봐도 된다.
=> snmp.SID.Oracle = ORACLE
select parameter, value from nls_database_parameters where parameter like '%CHAR%';
PARAMETER | VALUE |
NLS_NUMERIC_CHARACTERS | ., |
NLS_CHARACTERSET | KO16KSC5601 |
NLS_NCHAR_CONV_EXCP | FALSE |
NLS_NCHAR_CHARACTERSET | UTF8 |
########### 캐릭터셋 변경 ##########################
**** connect sys as sysdba;
NLS CHARACTERSET 변경방법 (DB REBUILD 없이)
Bulletin no : 10016
--------------------------------------------------------------------------------
데이타베이스의 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','WE8DEC','KO16MSWIN949') from dual;
만약 이 Select 문에서 ORA-01482 에러가 발생하면 지정한 CHARACTER SET이
지원되지 않는 경우이며 에러가 발생하지 않으면 CHARACTER SET을 변경할 수
있다.
작업을 하기전에는 만약을 위해서 DB 전체를 백업 받아두도록 한다.
CHARACTER SET 을 잘못 변경하면 DB 를 OPEN 할수가 없기 때문이다.
---------------------------------------------------------------
1. 다음의 Update문을 실행하여 CHARACTER SET을 변경한다.
UPDATE sys.props$
SET value$ = 'WE8DEC'
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
출처 : http://develop.sunshiny.co.kr/201
[오라클/oracle] 오라클에서 테이블 삭제 및 복구하기 (0) | 2015.05.04 |
---|---|
[Oracle/SQL] instr, substr 을 이용해서 스트링 잘라내기 (0) | 2015.04.20 |
[오라클/oracle] SQL 에디터로 vi 사용하기 (0) | 2015.04.20 |
[오라클/oracle] 내(현재) 계정 권한 조회하기 (0) | 2015.04.20 |
[Oracle/SQL] merge into (0) | 2015.04.20 |