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

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

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

    閔毓
    http://www.eshoo.com.cn 歡迎來到異客中國
    posts - 49,comments - 97,trackbacks - 0
    oracle 數(shù)據(jù)庫具有國際化的支持能力, 主要通過字符集等 NLS(National Language Support)??參數(shù)設(shè)置來實現(xiàn)對不同國家語言環(huán)境的支持。其中數(shù)據(jù)庫的字符集是在數(shù)據(jù)庫創(chuàng)建的階段, 即 create database 語句中指定的,數(shù)據(jù)庫一經(jīng)建立,字符集就沒法改變了,除非重建。我們最常用的字符集設(shè)置通常為 zhs16cgb231280(國標(biāo)2312字庫) 和 ZHS16GBK(方正 GBK 字庫)。GBK是在GB2312-80標(biāo)準(zhǔn)基礎(chǔ)上的內(nèi)碼擴(kuò)展規(guī)范,使用了雙字節(jié)編碼方案,其編碼范圍從8140至FEFE(剔除xx7F),共23940個碼位,共收錄了21003個漢字,完全兼容國標(biāo)GB2312-80標(biāo)準(zhǔn)(只實現(xiàn)了6763個漢字)。

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

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

    1.? ? ? ? 作為 oracle 用戶登錄數(shù)據(jù)庫服務(wù)器

    2.? ? ? ? 停止監(jiān)聽程序
    ? ?? ?? ?? ?? ?? ? $lsnrctl stop
    ? ?? ?? ?? ?? ?? ? 或
    ? ?? ?? ?? ?? ?? ? $lsnrctl stop??listener名稱

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

    如果上述查詢結(jié)果為 ZHS16CGB231280, 則進(jìn)行如下操作:

    4.? ? ? ? 保存下列數(shù)據(jù)庫配置參數(shù)的原始設(shè)置
    ? ?? ?? ?? ? show parameter job_queue_processes
    ? ?? ?? ?? ? show parameter aq_tm_processes

    5.? ? ? ? 關(guān)閉數(shù)據(jù)庫服務(wù),重新啟動后修改數(shù)據(jù)庫字符集, 并關(guān)閉數(shù)據(jù)庫
    ? ?? ?? ?? ???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.? ? ? ? 重新啟動數(shù)據(jù)庫服務(wù),恢復(fù) job_queue_processes設(shè)置
    ? ?? ?? ?? ? startup
    ? ?? ?? ?? ? alter system set job_queue_processes=原始設(shè)置;
    ? ?? ?? ?? ? alter system set aq_tm_processes=原始設(shè)置;
    ? ?? ?? ?? ? exit

    7.? ? ? ? 啟動監(jiān)聽程序
    ? ?? ?? ?? ? $lsnrctl start
    ? ?? ?? ?? ? 或
    ? ?? ?? ?? ? $lsnrctl start??listener名稱

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

    ? ? 注意,這里要指出的是, 字符集間的轉(zhuǎn)換可能會造成數(shù)據(jù)庫信息破壞,如把 ZHS16GBK 的oracle 數(shù)據(jù)庫轉(zhuǎn)換為 zhs16cgb231280, 其中的疑難漢字就會變成同樣的??, 有時甚至造成主鍵重復(fù)活違反唯一索引等問題。可能很少有人知道, Oracle 其實提供了一個應(yīng)用程序 csscan, 可以用來檢測字符集轉(zhuǎn)換后數(shù)據(jù)庫的內(nèi)容是否會被破壞。要使用 csscan 程序必須先以 sysdba 的身份執(zhí)行 $ORACLE_HOME/rdbms/admin 目錄下的 csminst.sql。csscan help=y 可以得到關(guān)于 csscan 命令使用方法的幫助。
    posted on 2005-10-20 12:34 閔毓 閱讀(610) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫心得與體會
    主站蜘蛛池模板: 97在线视频免费公开视频| 91免费在线播放| 亚洲v高清理论电影| 日本h在线精品免费观看| 亚洲AV无码一区二区大桥未久| 无码人妻一区二区三区免费视频 | 黄色a级片免费看| 丁香五月亚洲综合深深爱| 亚欧人成精品免费观看| 久久亚洲精品成人| 精品无码一级毛片免费视频观看 | 成年丰满熟妇午夜免费视频| 粉色视频成年免费人15次| 亚洲色图国产精品| 国产v片免费播放| 亚洲一区二区三区免费观看| 亚洲网站在线播放| 可以免费观看一级毛片黄a| 亚洲AV无码专区在线电影成人| 久草免费在线观看视频| 四虎国产精品永免费| 亚洲午夜久久久精品电影院| 亚洲人成国产精品无码| 最新仑乱免费视频| 亚洲GV天堂GV无码男同| 免费一级毛片在线播放不收费| 免费一级全黄少妇性色生活片| 亚洲男人av香蕉爽爽爽爽| 两个人看的www免费高清| 亚洲国产成人精品无码区在线观看 | 国产在线精品免费aaa片| 亚洲av中文无码乱人伦在线观看 | 国产精品久久久久久久久免费| 亚洲中文字幕在线无码一区二区| 野花高清在线观看免费3中文| 亚洲av日韩av永久无码电影| 亚洲卡一卡2卡三卡4卡无卡三| 曰批视频免费30分钟成人| 亚洲av无码一区二区三区人妖| 亚洲精品tv久久久久| 久久精品私人影院免费看|