修改 Oracle 數據庫實例字符集


Ø  簡介

Oracle 中創建數據庫實例后,就會有對應使用的編碼字符集。當我們設置的字符集與操作系統或者其他軟件字符集不一致時,就會出現中文亂碼等情況。此時我們就需要修改 Oracle 數據庫使用的字符集,下面是修改 Oracle 字符集的具體步驟:

 

Oracle 一般使用以下兩種字符集:

clip_image001

1.   SIMPLIFIED CHINESE_CHINA.ZHS16GBK

GBK 16-bit Simplified Chinese 能夠支持繁體中文,並且按照2個字符長度存儲一個漢字。

 

2.   SIMPLIFIED CHINESE_CHINA.AL32UTF8

多字節存儲,1個漢字(簡體、繁體)有時采用3個字符長度存儲。Oracle支持字符集的更改,但是UTF8Oracle中最大的字符集,也就是說UTF8ZHS16GBK的嚴格超集。

 

首先,我們查看數據庫實例所使用的字符集:

sqlplus "/as sysdba"

select userenv('language') from dual;

clip_image002

當前(orcl)使用的是 CHINESE_CHINA.AL32UTF8 字符集,下面進行修改:

 

1.   運行 CMD

 

2.   進入指定數據庫實例

set ORACLE_SID=ORCL     #"ORCL"表示需要修改字符集的數據庫實例名

 

3.   輸入命令

sqlplus /nolog

 

4.   登錄數據庫

conn /as sysdba

 

5.   關閉數據庫實例

SHUTDOWN IMMEDIATE;

clip_image003

 

6.   打開控制文件

STARTUP MOUNT;

clip_image004

 

7.   開啟限制會話模式

ALTER SYSTEM ENABLE RESTRICTED SESSION;

--ALTER SYSTEM DISABLE RESTRICTED SESSION;  #取消限制會話模式

 

8.   設定job隊列可以啟動的進程數

ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

說明:JOB_QUEUE_PROCESSES=0,則DBMS_JOB作業和Oracle Scheduler作業將不會在實例上運行。參考:https://blog.csdn.net/leshami/article/details/8694772

 

9.   禁用隊列監視器協調器

ALTER SYSTEM SET AQ_TM_PROCESSES=0;

 

10.  修改並打開數據庫

ALTER DATABASE OPEN;

 

11.  修改數據庫字符集

ALTER DATABASE CHARACTER SET ZHS16GBK;

當提示我們:新字符集必須為舊字符集的超集合,使用以下命令:

ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;

clip_image006

 

12.  查看參數列表

select * from v$nls_parameters;

clip_image007

可以看到,此時已經改為了"ZHS16GBK"字符集。

 

13.  設置完成后,關閉數據庫

SHUTDOWN IMMEDIATE;

 

14.  再次打開數據庫

STARTUP OPEN;

clip_image008

 

15.  這時我們再使用之前的方式查看字符集

select userenv('language') from dual;

clip_image009

OKORLC 數據庫的字符集就改為了"CHINESE_CHINA.ZHS16GBK"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM