<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Vincent.Chan‘s Blog

    常用鏈接

    統計

    積分與排名

    網站

    最新評論

    改變數據庫字符集的方法

    oracle 數據庫具有國際化的支持能力, 主要通過字符集等 NLS(National Language Support)  參數設置來實現對不同國家語言環境的支持。其中數據庫的字符集是在數據庫創建的階段, 即 create database 語句中指定的,數據庫一經建立,字符集就沒法改變了,除非重建。我們最常用的字符集設置通常為 zhs16cgb231280(國標2312字庫) 和 ZHS16GBK(方正 GBK 字庫)。GBK是在GB2312-80標準基礎上的內碼擴展規范,使用了雙字節編碼方案,其編碼范圍從8140至FEFE(剔除xx7F),共23940 個碼位,共收錄了21003個漢字,完全兼容國標GB2312-80標準(只實現了6763個漢字)。

    在項目開發和維護過程中我們經常會遇見下面的情況, 使用 ZHS16CGB231280 字符集的oracle 系統中,姓名中出現的很多疑難漢字無法正常顯示(顯示為 ??)。

        遇見這種情況以往最常見的處理方法是導出數據(exp), 用 ZHS16GBK 字符集重建數據庫,最后再導入(imp)數據。但這個過程對于一個大型數據庫來說很漫長和痛苦。這里給大家介紹一個比較快速簡單的方法,幾分鐘就能實現字 符集轉換。這里以 oracle9i為例(8i中的操作略有不同)。

    1.        作為 oracle 用戶登錄數據庫服務器

    2.        停止監聽程序
                       $lsnrctl stop
                       或
                       $lsnrctl stop  listener名稱

    3.        作為 sysdba 登錄數據庫, 并檢查目前的數據庫字符集設置
                       sqlplus /nolog
                       connect /as sysdba
                       select value$ from props$ where name ='NLS_CHARACTERSET';

    如果上述查詢結果為 ZHS16CGB231280, 則進行如下操作:

    4.        保存下列數據庫配置參數的原始設置
                 show parameter job_queue_processes
                 show parameter aq_tm_processes

    5.        關閉數據庫服務,重新啟動后修改數據庫字符集, 并關閉數據庫
                  shutdown immediate
                  startup mount
                  alter system enable restricted session;
                  alter database open;
                  alter system set job_queue_processes = 0;
                  alter system set aq_tm_processes = 0;
                  alter database character set internal_use zhs16gbk;
                  shutdown immediate

    6.        重新啟動數據庫服務,恢復 job_queue_processes設置
                 startup
                 alter system set job_queue_processes=原始設置;
                 alter system set aq_tm_processes=原始設置;
                 exit

    7.        啟動監聽程序
                 $lsnrctl start
                 或
                 $lsnrctl start  listener名稱

    8.        修改客戶端 NLS_LANG 設置
                 windows 客戶端在注冊表中修改 NLS_LANG 參數:
                 nls_lang=”American_america.zhs16gbk”

        注意,這里要指出的是, 字符集間的轉換可能會造成數據庫信息破壞,如把 ZHS16GBK 的oracle 數據庫轉換為 zhs16cgb231280, 其中的疑難漢字就會變成同樣的??, 有時甚至造成主鍵重復活違反唯一索引等問題。可能很少有人知道, Oracle 其實提供了一個應用程序 csscan, 可以用來檢測字符集轉換后數據庫的內容是否會被破壞。要使用 csscan 程序必須先以 sysdba 的身份執行 $ORACLE_HOME/rdbms/admin 目錄下的 csminst.sql。csscan help=y 可以得到關于 csscan 命令使用方法的幫助。

    posted on 2006-02-18 12:43 Vincent.Chen 閱讀(547) 評論(0)  編輯  收藏 所屬分類: Database

    主站蜘蛛池模板: 亚洲国产精品无码AAA片| 亚洲国产成人久久精品99 | 2019中文字幕在线电影免费| 综合亚洲伊人午夜网| xxxxxx日本处大片免费看| 亚洲一区二区精品视频| 国产日韩AV免费无码一区二区三区 | 亚洲日韩在线视频| 99在线精品视频观看免费| 亚洲精品在线播放视频| 成年人网站免费视频| 亚洲人成免费网站| 精品国产麻豆免费网站| 国产成人综合亚洲绿色| 亚洲色婷婷综合开心网| 国产成年无码久久久免费| 亚洲一区二区三区日本久久九| xxxx日本免费| 日韩色视频一区二区三区亚洲| 免费看男女下面日出水视频| sihu国产精品永久免费| 久久精品国产亚洲AV麻豆~| 永久在线免费观看| 亚洲欧美aⅴ在线资源| 亚洲人成人网站在线观看| 免费视频成人手机在线观看网址| 亚洲大片免费观看| 国产片免费在线观看| 中文字幕无码免费久久| www.亚洲成在线| 国产成人亚洲综合无码| 日本视频一区在线观看免费| 亚洲av中文无码乱人伦在线观看| 久久久青草青青国产亚洲免观 | 成人免费视频国产| 成人片黄网站色大片免费观看APP| 亚洲福利视频网站| 亚洲黄黄黄网站在线观看| 国产精品久久免费| 一级毛片无遮挡免费全部| 亚洲男女性高爱潮网站|