提示
Oracle數據庫默認的字符集編碼為US7ASCII,這個編碼是不支持中文的,如果想要在數據庫存儲中文,就需要修改編碼為
ZHS16GBK
或UTF-8
編碼和字符集是一個意思,只是叫法不一樣而已
前置條件
修改字符集的前提是知道我們現在用的是什么字符集
查詢數據庫字符集
SELECT?*?FROM?NLS_DATABASE_PARAMETERS?where?PARAMETER='NLS_CHARACTERSET';
一般情況下我們都是將字符集修改為UTF-8
或ZHS16GBK
(GB18030
)
修改編碼
????1. 首先以SYSDBA的身份登錄上去
????sqlplus?/?as?sysdba
????2. 關閉數據庫
????shutdown?immediate
????3. 以mount(掛載方式)打開數據庫
????startup?mount
????4. 設置session
????--?設置Oracle數據庫為限制訪問狀態ALTER?SYSTEM?ENABLE?RESTRICTED?SESSION;?--?關閉Oracle數據庫的Job?Queue進程ALTER?SYSTEM?SET?JOB_QUEUE_PROCESSES=0;?--?關閉Oracle數據庫的Advanced?Queuing進程ALTER?SYSTEM?SET?AQ_TM_PROCESSES=0;
????5. 啟動數據庫
????alter?database?open;
????6. 修改字符集
????--?修改為ZHS16GBK/GB18030ALTER?DATABASE?CHARACTER?SET?ZHS16GBK;--?修改為UTF-8ALTER?DATABASE?CHARACTER?SET?AL32UTF8;
????????執行此命令可能會報錯:ORA-12712: 新字符集必須為舊字符集的超集。
????????我們可以通過執行這個sql進行強制修改
????ALTER?DATABASE?CHARACTER?SET?INTERNAL_USE?ZHS16GBK;
????7. 關閉數據庫,重新啟動
????shutdown?immediate;startup