Linux系統Oracle資料庫亂碼問題的解決方案

來源:互聯網
上載者:User

1.修改遠程linux機器的配置

在vim /etc/sysconfig/i18n檔案裡的配置如下:
LANG="zh_CN.GBK"

SUPPORTED="zh_CN.UTF-8:zh_CN:zh:zh_CN.GBK"
SYSFONT="latarcyrheb-sun16"

2.修改稿Oracle的環境變數:用oracle使用者進入系統。在.bash_profile檔案最後加上以下內容
NLS_LANG="SIMPLIFIED Chinese"_CHINA.ZHS16GBK

export NLS_LANG


3.重啟資料庫伺服器,啟動資料庫監聽,啟動資料庫
4.用sys使用者登入資料庫,執行以下語句:
update props$ set value$='ZHS16GBK' where name='NLS_CHARACTERSET'
重啟資料庫監聽。
到這兒,資料庫資料已能正常顯示,但以前的資料還是亂碼,需要重新匯入。資料庫會出現另一個問題 ora-06552.

5.以下是ora-06552的解決方案:
SHUTDOWN IMMEDIATE;

STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
 
 
COL VALUE NEW_VALUE CHARSET
SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
COL VALUE NEW_VALUE NCHARSET
SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';
 
--INTERNAL_USE是沒有寫在文檔中的參數,用以強制完成字元集一致化
ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;
 
 
SHUTDOWN IMMEDIATE;
STARTUP;
-- 再次啟動資料庫一遍
SHUTDOWN IMMEDIATE;
STARTUP;
按照上面的步驟,一步一步來,一步不要少,完成以後就ok了

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.