999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

ORACLE字符集問題的分析

2019-08-06 23:04:37張孌
科學與財富 2019年24期
關鍵詞:數據庫

張孌

1.問題提出背景

隨著信息化建設的不斷深入,各大港口公司都運用應用系統來輔助生產和管理,數據庫是其中不可或缺的部分,占有重要的地位。在各大數據庫產品中,選擇 ORACLE 作為數據庫管理平臺的用戶比較多。 ORACLE 不論是數據庫管理能力還是安全性都是無可非議的,但是,它在漢字信息的顯示方面確實給我們帶來不少麻煩,筆者就經常遇到有關數據庫漢字顯示的問題,尤其是在數據庫導入導出的時候,主要現象是把漢字顯示為不可識別的亂碼(一般是“?”),造成原來大量信息無法使用。本文將就這一問題產生的原因和解決辦法進行一些探討。

2.ORACLE字符集概述

2.1 字符集定義

字符集是一個字節數據的解釋的符號集合,有大小之分有相互的包括關系,如US7ASCII就是ZHS16GBK的子集,從US7ASCII到ZHS16GBK不會有數據解釋上的問題,不會有數據丟失,Oracle對這種問題也要求從子集到超集的導出受支持,反之不行。字符集決定數據庫所支持的語言標準,也就是說,數據庫支持中文、日文或是英文不是有操作系統平臺決定的,而是由字符集決定的。

字符集不僅需在服務器端存在,而且客戶端也必須有字符集注冊。服務器端字符集是在安裝數據庫時指定的,字符集登記信息存儲在數據庫字典的 V$NLS_PARAMETERS 表中;客戶端字符集是在系統注冊表中登記的。要在客戶端正確顯示數據庫漢字信息,首先必須使服務器端的字符集與客戶端的字符集一致;其次是加載到數據庫的數據字符集必須與服務器端字符集一致。影響數據庫字符集最重要的參數是NLS_LANG參數。它的格式如下:NLS_LANG = language_territory.charset。它有三個組成部分(語言、地域和字符集),每個成分控制了NLS子集的特性。其中: Language 指定服務器消息的語言,也就是sqlplus的程序的顯示字體,一般常用SIMPLIFIED CHINESE,American America;Territory 指定服務器的日期和數字格式;Charset是字符集的設定。常用的一些字符集有UTF8,US7ASCII,ZHS16GBK,AL32UTF8。

從NLS_LANG的組成我們可以看出,真正影響數據庫字符集的其實是第三部分。所以兩個數據庫之間的字符集只要第三部分一樣就可以相互導入導出數據,前面影響的只是提示信息是中文還是英文。

2.2oracle字符集的查詢方法

2.2.1查詢oracle服務器端的字符集 SQL> select * from nls_database_parameters;

2.2.2查詢dmp文件的字符集 用Oracle的exp工具導出的dmp文件也包含了字符集信息,dmp文件的第2和第3個字節記錄了它的字符集。如果文件不大,比如只有幾M或幾十M,可以用UltraEdit打開(16進制方式),看第2、第3個字節的內容,如0001,然后用以下SQL查出它對應的字符集:SQL> select nls_charset_name(to_number('0001','xxxx')) from dual;如果文件很大,比如有2G以上(這也是最常見的情況),用文本編輯器打開很慢或者完全打不開,可以用以下命令(在unix主機上):$ cat a.dmp |od -x| head 其中,a.dmp是需要查看字符集的dmp文件。

2.2.3查詢Oracle Client端的字符集

在Windows中,決定客戶端字符集的參數nls_lang定義在Windows系統的注冊表里,如果要重新定義,可以直接修改注冊表。運行注冊表,選擇” HKEY_LACAL_MACHINE”→”SOFTWARE”→”ORACLE”→”HOME0”,查看里面的NLS_LANG數據項。還可以在Dos窗口里面自己設置,比如:set nls_lang=AMERICAN_AMERICA. US7ASCII 這樣就只影響這個窗口里面的環境變量。

3.幾種亂碼問題的解決方法

3.1服務器端字符集與客戶字端字符集不同,但與加載數據字符集一致。

解決方法:設置客戶端字符集與服務器端字符集一致。首先查看服務器端字符集,然后按照服務器端字符集對客戶端進行配置。修改注冊表信息,將NLS_LANG數據項值改為與服務器端相同的字符集。

3.2服務器端字符集與客戶端字符集相同,與加載數據字符集不一致。

這類問題一般發生在服務器數據庫版本升級或重新安裝系統時選擇了與原來服務器端不同的字符集,而恢復加載的備份數據仍是按原字符集導出,或者加載從其它使用不同字符集的數據庫導出數據的情況。這兩種情況中,不管服務器端和客戶端字符集是否一致都無法正常顯示漢字。解決方法:強制將加載數據的字符集改為與服務器端字符集一致。

方法一:強行修改服務器端數據庫當前字符集。在用Imp命令加載數據前,先在客戶端用sql*plus以DBA 用戶登錄,執行 SQL > create database character set US7ASCII ;你會發現語句執行過程中,會出現錯誤提示信息,此時不用理會,實際上數據庫的字符集已被強行修改為US7ASCII,接著用imp命令裝載數據。等數據裝載完成以后,關閉數據庫,再啟動數據庫,用合法用戶登錄數據庫,在 sql> 命令提示符下,查詢數據庫字符集,可以看到其已復原,這時再查看有漢字字符數據的表時,漢字已能被正確顯示。

方法二:利用數據格式轉儲,避開字符集限制。這種方法主要用于加載外來數據庫的不同字符集數據。其方法如下:先將數據加載到具有相同字符集的服務器上,然后用轉換工具卸出為access格式數據庫,再用轉換工具轉入到不同字符集的數據庫中,這樣就避免了字符集的困擾。

3.3服務器端字符集與客戶端字符集不同,與輸入數據字符集不一致。

這種情況是在客戶端與服務器端字符集不一致時,從客戶端輸入了漢字信息。輸入的這些信息即便是把客戶端字符集更改正確,也無法顯示漢字。對于這種情況,沒有很好的辦法,只能先把客戶端與服務器端字符集匹配一致后,重新錄入數據。

通過上面的了解,我們知道導致在后期使用數據庫是出現種種關于字符集的問題,多半是由于在數據庫設計、安裝指出沒有很好地考慮到以后的需要,所以,我們完全可以通過在服務器和客戶端使用相同的字符集來避免由此類問題引出的麻煩。

4.應注意的問題

一旦數據庫創建后,數據庫的字符集理論上講是不能改變的。因此,在設計和安裝之初考慮使用哪一種字符集十分重要。根據Oracle的官方說明,字符集的轉換是從子集到超集受支持,反之不行。如果兩種字符集之間根本沒有子集和超集的關系,那么字符集的轉換是不受支持的。對數據庫而言,錯誤的修改字符集將會導致很多不可測的后果,可能會嚴重影響數據庫的正常運行,所以在修改之前一定要確認兩種字符集是否存在子集和超集的關系。一般來說,除非萬不得已,我們不建議修改數據庫服務器端的字符集。在10g數據庫中,客戶端字符集必須與數據庫和行字符集類型一致,否則漢字將出現亂碼;如果要將早期數據庫中的數據移入到9i、10g中,由于原始數據字符集問題,新的數據庫核心必須使用早期數據庫核心字符集類型,客戶端也要保持與早期核心字符集一致。

猜你喜歡
數據庫
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
兩種新的非確定數據庫上的Top-K查詢
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
數據庫
財經(2015年3期)2015-06-09 17:41:31
數據庫
財經(2014年21期)2014-08-18 01:50:18
數據庫
財經(2014年6期)2014-03-12 08:28:19
數據庫
財經(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 狂欢视频在线观看不卡| 日本午夜三级| 无码内射中文字幕岛国片| 日韩 欧美 小说 综合网 另类| 日本人又色又爽的视频| 久久无码高潮喷水| 中国国产A一级毛片| 亚洲欧州色色免费AV| 国产 在线视频无码| 国产成人精品一区二区三区| 国产精品尹人在线观看| 国产超碰一区二区三区| 亚洲无码一区在线观看| 免费看美女自慰的网站| 91丝袜乱伦| av在线手机播放| 中文字幕在线观看日本| 国产人妖视频一区在线观看| 免费看久久精品99| 亚洲永久视频| 爆乳熟妇一区二区三区| 婷婷六月天激情| 欧美激情福利| 国产精品亚洲一区二区三区在线观看| 国产手机在线ΑⅤ片无码观看| 91青青草视频在线观看的| 天天视频在线91频| 日韩免费毛片视频| 国产毛片基地| 色综合中文综合网| 亚洲AV无码久久精品色欲| 国产在线观看一区精品| 欧美精品三级在线| av尤物免费在线观看| 日本亚洲成高清一区二区三区| 在线看片免费人成视久网下载| 2048国产精品原创综合在线| 一级毛片在线免费视频| 欧美亚洲国产视频| 全部无卡免费的毛片在线看| 欧美成人午夜在线全部免费| 2021天堂在线亚洲精品专区| 九一九色国产| 熟妇丰满人妻av无码区| 日本成人一区| 在线不卡免费视频| 国产精品一线天| 亚洲第一黄色网址| 真人高潮娇喘嗯啊在线观看| 91精品人妻一区二区| 国产av一码二码三码无码 | 亚洲熟女中文字幕男人总站| 午夜限制老子影院888| 国产剧情一区二区| 国产精品va免费视频| 成人亚洲国产| 18禁影院亚洲专区| 精品国产乱码久久久久久一区二区| 老司机精品一区在线视频| 亚洲精品自产拍在线观看APP| 日韩中文字幕亚洲无线码| 国产精品视频导航| 欧美人在线一区二区三区| 国产精品永久不卡免费视频| 久久久久久久97| 国产精品3p视频| 午夜精品区| 一级片免费网站| 亚洲精选无码久久久| 自拍偷拍一区| 欧美日韩精品综合在线一区| 视频一本大道香蕉久在线播放| 午夜成人在线视频| 国产自在线拍| 欧美日韩国产精品va| 国产主播福利在线观看| 中文字幕1区2区| 丁香亚洲综合五月天婷婷| 欧美性久久久久| 欧美在线视频a| 青青草原国产免费av观看| 国产情侣一区二区三区|