国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

ORACLE數(shù)據(jù)庫(kù)字符集問題及解決方法

2017-04-25 09:41趙丹妮遼寧錦州渤海大學(xué)信息科學(xué)與技術(shù)學(xué)院
數(shù)碼世界 2017年4期
關(guān)鍵詞:服務(wù)器端字節(jié)客戶端

趙丹妮 遼寧錦州渤海大學(xué)信息科學(xué)與技術(shù)學(xué)院

ORACLE數(shù)據(jù)庫(kù)字符集問題及解決方法

趙丹妮 遼寧錦州渤海大學(xué)信息科學(xué)與技術(shù)學(xué)院

當(dāng)將數(shù)據(jù)導(dǎo)入以及導(dǎo)出到數(shù)據(jù)庫(kù)里面的過程中,數(shù)據(jù)要與存儲(chǔ)的數(shù)據(jù)保持一致性,這是一個(gè)需要引起重視的問題,數(shù)據(jù)的一致性與設(shè)置字符集有著直接的聯(lián)系。本文主要是先圍繞著轉(zhuǎn)化字符集的機(jī)理展開,聯(lián)系具體的現(xiàn)實(shí)中所存在的具體問題,著重對(duì)ORACLE數(shù)據(jù)庫(kù)字符集存在的問題進(jìn)行了分析,并且針對(duì)相關(guān)的問題提出了解決對(duì)策。

ORACLE 字符集 解決

作為現(xiàn)今數(shù)據(jù)庫(kù)平臺(tái)中最為流行的數(shù)據(jù)庫(kù),在實(shí)際的工作運(yùn)用中,Oracle經(jīng)常由于字符集的因素從而造成數(shù)據(jù)庫(kù)里面的漢字信息在轉(zhuǎn)換的過程中產(chǎn)生亂碼,甚至于直接導(dǎo)致數(shù)據(jù)在遷移的過程中導(dǎo)致失敗等問題,這些問題對(duì)于用戶而言,是一個(gè)很大的困擾因素。所以針對(duì)這些數(shù)據(jù)字符集的問題,本文提出了相應(yīng)的解決對(duì)策。

1 問題的提出

ORACLE數(shù)據(jù)庫(kù)在工廠的管理中起到了很大的作用,工廠數(shù)據(jù)的處理離不開數(shù)據(jù)庫(kù)。然而因?yàn)樵O(shè)置數(shù)據(jù)庫(kù)字符集的時(shí)候都不一樣,所以常常在具體的工作應(yīng)用中常常會(huì)碰到當(dāng)數(shù)據(jù)從數(shù)據(jù)庫(kù)服務(wù)器中導(dǎo)出的時(shí)候,顯示出的是亂碼,造成了很多的漢字很難辨認(rèn),這對(duì)于數(shù)據(jù)的讀寫都是一個(gè)很大的問題,另外因?yàn)楣S的需求,需要對(duì)數(shù)據(jù)進(jìn)行遷移的時(shí)候,出現(xiàn)了遷移失敗等問題。這兩種數(shù)據(jù)庫(kù)問題是比較常見的。本文主要是討論了這兩種問題的解決對(duì)策。

2 Oracle數(shù)據(jù)庫(kù)的字符集問題

為了滿足多種語(yǔ)言文字的需求,Oracle數(shù)據(jù)庫(kù)因此實(shí)現(xiàn)了字符集的設(shè)置。字符集的存在之處除了服務(wù)器端之外,還可以在客戶端中存在,同時(shí)客戶端中的字符集一定實(shí)現(xiàn)注冊(cè)。如果想要將Oracl數(shù)據(jù)庫(kù)中的相關(guān)漢字信息成功顯示在客戶端,那么就一定要保持客戶端的字符集和服務(wù)器端字符集是完全一致的;此外如果字符集是不相同的時(shí)候,那么在數(shù)據(jù)遷移,完成字符集轉(zhuǎn)換的過程中,就很容易出現(xiàn)重要數(shù)據(jù)的缺失,最終造成了數(shù)據(jù)庫(kù)在導(dǎo)入,導(dǎo)出數(shù)據(jù)的時(shí)候出現(xiàn)錯(cuò)誤,最終失敗。

數(shù)據(jù)遷移的過程中,會(huì)經(jīng)常用到Oracle的Import/emport工具,該工具可以實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)化以及數(shù)據(jù)的遷移,該工具可以跨平臺(tái),因此數(shù)據(jù)遷移的過程中,應(yīng)用十分廣泛。數(shù)據(jù)導(dǎo)出/導(dǎo)入的時(shí)候常常會(huì)用到下面的字符集:①源數(shù)據(jù)庫(kù)字符集;②目標(biāo)字符集;③導(dǎo)入/導(dǎo)出過程中用戶會(huì)話字符集。

3 ORACLE字符集的轉(zhuǎn)換原理

為了能夠適應(yīng)多種文字語(yǔ)言的顯示問題,ORACLE數(shù)據(jù)庫(kù)中實(shí)現(xiàn)了字符集設(shè)定??蛻舳艘约胺?wù)器端都需要注冊(cè)字符集,當(dāng)服務(wù)器端和客戶端的字符集是保持一致的時(shí)候,ORACLE數(shù)據(jù)庫(kù)才可以確??蛻舳酥械臄?shù)據(jù)是完全正常顯示的。倘若字符集不是一樣的時(shí)候,那么在進(jìn)行數(shù)據(jù)庫(kù)的操作過程中很可能出現(xiàn)數(shù)據(jù)顯示亂碼的現(xiàn)象。當(dāng)字符集不一致,數(shù)據(jù)庫(kù)的遷移中字符集的轉(zhuǎn)換,數(shù)據(jù)容易出現(xiàn)丟失的情況,而且數(shù)據(jù)的導(dǎo)入導(dǎo)出也會(huì)出現(xiàn)問題。

4 查詢ORACLE數(shù)據(jù)庫(kù)字符集參數(shù)

4.1 查詢ORACLE服務(wù)端的字符集

查詢的對(duì)象ORACLE服務(wù)端中的字符集,可以選擇很多種方式,通常選擇直觀的方法有以下幾種:

顯示的結(jié)果為:NEWZLAND_NEWZLANDZHS15GBK

4.2 查詢dmp文件中字符集

當(dāng)運(yùn)用exp工具的時(shí)候就會(huì)導(dǎo)出dmp文件,dmp文件中會(huì)將字符集的相關(guān)信息表現(xiàn)出來(lái),對(duì)dmp文件進(jìn)行分析,第2個(gè)或者第3個(gè)字節(jié)處顯示的是字符集。當(dāng)dmp文件是在幾十M以下的時(shí)候,能夠選擇16進(jìn)制的UltraEdit查看這個(gè)dmp文件,對(duì)第2、第3字節(jié)中的信息進(jìn)行分析,比如0336,該字節(jié)中的信息可以通過sql語(yǔ)句進(jìn)行查詢,sql語(yǔ)句如下:

得出的顯示結(jié)果是ZHS18GBK。

然而大多數(shù)時(shí)候,dmp文件一般都是比較大的,有的甚至在2G以上,倘若依然是選擇上面的方法進(jìn)行字符信息的查詢以及打開的話,顯然是不太適用的,有時(shí)會(huì)出現(xiàn)打不開文件的尷尬局面,有時(shí)即使打開了也是十分緩慢,這個(gè)時(shí)候查詢的方式可以是:cat exps. dmp |ods -x|head -1|awks ‘{prints $2 $3}’|cut -c 3-6,同時(shí)也可以根據(jù)sql語(yǔ)句查詢字符集。

5 ORACLE數(shù)據(jù)庫(kù)字符集問題的解決

對(duì)于ORACLE數(shù)據(jù)庫(kù)而言,許多的字符集彼此間是相互包容的聯(lián)系,例如US7ASCII和ZHSI6CBK,前者是為后者的子集,從前者到后者的這個(gè)字符集轉(zhuǎn)化的過程中,解釋數(shù)據(jù)的過程不會(huì)出現(xiàn)數(shù)據(jù)缺失的情況。同時(shí)ORACLE數(shù)據(jù)庫(kù),轉(zhuǎn)換字符集操作有時(shí)是不可逆的,例如將子集向超集轉(zhuǎn)換的過程是可以實(shí)現(xiàn)的,但是反過來(lái)四不可以的。

5.1 客戶端字符集和服務(wù)器指定字符集不一致,但和加載數(shù)據(jù)字符集一致

一般情況下在創(chuàng)建數(shù)據(jù)的時(shí)候字符集通就確定了,當(dāng)用戶的數(shù)據(jù)是存儲(chǔ)下來(lái)以后,數(shù)據(jù)就無(wú)法進(jìn)行修改了,由于數(shù)據(jù)庫(kù)中的數(shù)據(jù)方式是字符集的形式,當(dāng)變?yōu)槠渌淖址?,之前的?shù)據(jù)就無(wú)法正常顯示了。所以根據(jù)所查看到的服務(wù)器端中的字符集,設(shè)置客戶端。其中有2種配置的方法:

①當(dāng)Oracle客戶端軟件安裝的時(shí)候指定。②根據(jù)對(duì)客戶端的操作系統(tǒng)中的注冊(cè)表進(jìn)行修改,處于WINDOWS平臺(tái)下,能夠?qū)⒆?cè)表打開,修改注冊(cè)表為:HKEY_LOCAL MACHINE ORACLEHOME中NLS_LANG值,從而實(shí)現(xiàn)統(tǒng)一服務(wù)器字符集于客戶端。

5.2 客戶端字符集和服務(wù)器指定字符集相一致,但是和加載數(shù)據(jù)字符集不同

當(dāng)升級(jí)Oracle版本或者是進(jìn)行系統(tǒng)安裝的時(shí)候,這種問題就會(huì)出現(xiàn),另外如果當(dāng)選擇的字符集和服務(wù)器端是不一致的,數(shù)據(jù)備份中仍然是選擇的根據(jù)之前的字符集卸出。在這種情況下,無(wú)論客戶端字符集與服務(wù)器端的是不是一致的,漢字都是不可能顯示出來(lái)的。通常要解決這種問題采取的方法總結(jié)如下。

5.2.1 將Oracle安裝在服務(wù)器端

當(dāng)安裝的時(shí)候需要保證數(shù)據(jù)庫(kù)中的字符集和之前所卸出的字符集是一致的。這種情況下通常要用在空庫(kù)以及字符集是一致的情況下。

5.2.2 對(duì)服務(wù)器端進(jìn)行強(qiáng)行地修改

當(dāng)用imp命令對(duì)數(shù)據(jù)進(jìn)行加載之前,需要先修改已有的Oracle數(shù)據(jù)庫(kù)中的字符集,確保加載的數(shù)據(jù)字符集和服務(wù)器中的的字符集是完全一致的。該字符集轉(zhuǎn)化方式比較簡(jiǎn)單,然而實(shí)用性不是很大,轉(zhuǎn)化的場(chǎng)合是當(dāng)新的字符集超過了原來(lái)的字符集的時(shí)候采用。解決方式如下:

選擇二進(jìn)制的工具進(jìn)行編輯,例如uedi 32。將dmp文件打開,從而得到第2、3字節(jié)的信息,比如0012,先將0012向10進(jìn)制轉(zhuǎn)換,接著字符集獲得時(shí)選擇NLS_CHARSET__NAMES函數(shù),sql語(yǔ)句如下:

接著將dmp文件里面的字符集進(jìn)行修改為ZHSl5GBK,這個(gè)時(shí)候就用NLS—CHARSEl ID將這個(gè)字符集的編號(hào)進(jìn)行獲取,sql語(yǔ)句如下:

將第2、3字節(jié)中的0002變?yōu)?364,從而就實(shí)現(xiàn)了該dmp文件的字符集轉(zhuǎn)化,這是個(gè)US7ASCII轉(zhuǎn)化為ZHSl6GBK的過程,接著將dmp文件導(dǎo)入到ZHSl6GBK字符集的數(shù)據(jù)庫(kù)就行了。

結(jié)語(yǔ):深入了解Oracle轉(zhuǎn)化字符集相關(guān)原理,能夠給人們的實(shí)際工作減少很多不必要的麻煩,可以盡量防止數(shù)據(jù)的損失以及數(shù)據(jù)顯示中出現(xiàn)亂碼的局面,本文根據(jù)目前數(shù)據(jù)庫(kù)字符集所存在的問題從而提出了對(duì)應(yīng)的解決對(duì)策。

[1]Stefano Andreozzi,Anirikh Chakrabarti,Keng Cher Soh,Anthony Burgard,Tae Hoon Yang,Stephen Van Dien,Ljubisa Miskovic,Vassily Hatzimanikatis. Identification of metabolic engineering targets for the enhancement of 1,4-butanediol production in recombinant E. coli using largescale kinetic models[J]. Metabolic Engineering,2016

[2]Mingyue Jiang,Tsong Yueh Chen,Fei-Ching Kuo,Dave Towey,Zuohua Ding. A Metamorphic Testing Approach for Supporting Program Repair Without the Need for a Test Oracle[J]. The Journal of Systems & Software,2015

[3]Katherine Brunson,Xin Zhao,Nu He,Xiangming Dai,Antonia Rodrigues,Dongya Yang. New insights into the origins of oracle bone divination: Ancient DNA from Late Neolithic Chinese bovines[J]. Journal of Archaeological Science,2016

[4]鄭曉江,孫雪華.ORACLE數(shù)據(jù)庫(kù)字符集問題及其解決方法[C]//上海市電機(jī)工程學(xué)會(huì)、上海市電工技術(shù)學(xué)會(huì)2001年學(xué)術(shù)年會(huì).2015

猜你喜歡
服務(wù)器端字節(jié)客戶端
你的手機(jī)安裝了多少個(gè)客戶端
“人民網(wǎng)+客戶端”推出數(shù)據(jù)新聞
——穩(wěn)就業(yè)、惠民生,“數(shù)”讀十年成績(jī)單
No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
Linux環(huán)境下基于Socket的數(shù)據(jù)傳輸軟件設(shè)計(jì)
No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
輕量級(jí)分組密碼Midori64的積分攻擊
基于Qt的安全即時(shí)通訊軟件服務(wù)器端設(shè)計(jì)
基于Qt的網(wǎng)絡(luò)聊天軟件服務(wù)器端設(shè)計(jì)
基于C/S架構(gòu)的嵌入式監(jiān)控組態(tài)外設(shè)擴(kuò)展機(jī)制研究與應(yīng)用
新華社推出新版客戶端 打造移動(dòng)互聯(lián)新聞旗艦
福安市| 临潭县| 武义县| 奉新县| 东丽区| 阿拉善右旗| 黑山县| 前郭尔| 田东县| 石家庄市| 碌曲县| 五莲县| 岳阳市| 韩城市| 德化县| 茂名市| 新源县| 阿拉善右旗| 高密市| 商水县| 汕头市| 永顺县| 南阳市| 永济市| 青川县| 固镇县| 尖扎县| 新邵县| 甘德县| 嘉善县| 乐山市| 上栗县| 蓬安县| 盐山县| 永善县| 昌图县| 紫金县| 永登县| 南投市| 沙河市| 峨边|