Oacle 문자 집합 을 본 후 Oacle 서버 와 클 라 이언 트 문자 집합 을 수정 하 는 절차
select userenv('language') from dual;
server 문자 집합 수정:데이터 베 이 스 를 RESTRICTED 모드 로 시작 하여 문자 집합 변경:
SQL>conn /as sysdba
SQL>shutdown immediate;
SQL>startup mount
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>alter database open;
SQL>ALTER DATABASE CHARACTER SET ZHS16GBK;
ALTER DATABASE CHARACTER SET ZHS16GBK ERROR at line 1:
ORA-12712: new character set must be a superset of old character set
우리 의 문자 집합 을 알려 줍 니 다:새 문자 집합 은 오래된 문자 집합 을 초과 해 야 합 니 다.이 때 우 리 는 초 집합 검 사 를 건 너 뛰 어 변경 할 수 있 습 니 다.
SQL>ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
SQL>select * from v$nls_parameters;
변경 완료 여 부 를 다시 확인 합 니 다:
SQL>shutdown immediate;
SQL>startup
SQL>select * from v$nls_parameters;
우 리 는 이 과정 이 이전에 ALTER DATABASE CHARACTER SET 가 조작 한 내부 과정 과 완전히 같다 는 것 을 보 았 다.즉,INTERNALUSE 가 제공 하 는 도움 은 Oracle 데이터 베 이 스 를 부분 집합 과 초 집합 검사 로 돌아 가게 하 는 것 이다.이 방법 은 어떤 면 에서 쓸모 가 있다.예 를 들 어 테스트 등 이다.제품 환경 에 응용 할 때 모두 조심해 야 한다.의외 의 문제 가 있 을 수 있다.
2.oracle 클 라 이언 트 단자 문자 집합 수정
$echo$NLS_LANG
client 문자 집합 수정: /home/oracle 과/root 사용자 디 렉 터 리 에 있 는.bashprofile 에 export NLS 추가 또는 수정LANG="AMERICAN_AMERICA.UTF 8"문장
현재 ssh 창 을 닫 습 니 다.
주의:NLSLANG 변 수 는 반드시 정확하게 설정 해 야 합 니 다.그렇지 않 으 면 sqlplus 가 실 효 될 수 있 습 니 다.
3.데이터베이스 문자 집합 을 UTF-8 로 변경
1.DBA 로 로그 인
2.변환 문 실행:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT EXCLUSIVE;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE NATIONAL CHARACTER SET UTF8;
SHUTDOWN IMMEDIATE;
STARTUP;
주의:큰 대상 이 없 으 면 사용 과정 에서 언어 전환 을 하 는 데 아무런 영향 이 없습니다!ORA-12717:CANNot ALTER DATABASE NATIONAL CHARACTER SET WHEN NCLOBDATAEXISTS,이 문 제 를 해결 하 는 방법 이 나 올 수 있 습 니 다.
INTERNAL 이용USE 키워드 수정 영역 설정
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;