真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle亂碼怎么改 oracle亂碼解決

oracle中的數(shù)據(jù)庫亂碼的原因與解決

在SQL*Plus中用insert *** 的都是中文的 為什么一存入服務(wù)器后 再select出的就是??? 有的時(shí)候 服務(wù)器數(shù)據(jù)先導(dǎo)出 重裝服務(wù)器 再導(dǎo)入數(shù)據(jù) 結(jié)果 發(fā)生數(shù)據(jù)查詢成??? …… 這些問題 一般是因?yàn)樽址O(shè)置不對(duì)造成的 很久以來 字符集一直是困擾著眾多Oracle愛好者的問題 筆者從事Oracle數(shù)據(jù)庫管理和應(yīng)用已經(jīng)幾年了 經(jīng)常接到客戶的類似上面提到的有關(guān)數(shù)據(jù)庫字符集的 告急 和 求救 在此我們就這個(gè)問題做一些分析和探討 首先 我們要明確什么是字符集?字符集是一個(gè)字節(jié)數(shù)據(jù)的解釋的符號(hào)集合 有大小之分 有相互的包括關(guān)系 如us ascii就是zhs gbk的子集 從us ascii到zhs gbk不會(huì)有數(shù)據(jù)解釋上的問題 不會(huì)有數(shù)據(jù)丟失 Oracle對(duì)這種問題也要求從子集到超集的導(dǎo)出受支持 反之不行 在所有的字符集中utf 應(yīng)該是最大 因?yàn)樗趗nicode 雙字節(jié)保存字符(也因此在存儲(chǔ)空間上占用更多) 其次 一旦數(shù)據(jù)庫創(chuàng)建后 數(shù)據(jù)庫的字符集是不能改變的 因此 在設(shè)計(jì)和安裝之初考慮使用哪一種字符集是十分重要的 數(shù)據(jù)庫字符集應(yīng)該是操作系統(tǒng)本地字符集的一個(gè)超集 存取數(shù)據(jù)庫的客戶使用的字符集將決定選擇哪一個(gè)超集 即數(shù)據(jù)庫字符集應(yīng)該是所有客戶字符集的超集 在實(shí)際應(yīng)用中 和字符集問題關(guān)系最大的恐怕就是exp/imp了 在做exp/imp時(shí) 如果Client 和Server的nls_lang設(shè)置是一樣的 一般就沒有問題的 但是 要在兩個(gè)不同字符集的系統(tǒng)之間導(dǎo)數(shù)據(jù)就經(jīng)常會(huì)有這樣或那樣的問題 如 導(dǎo)出時(shí)數(shù)據(jù)庫的顯示正常 是中文 當(dāng)導(dǎo)入到其他系統(tǒng)時(shí) 就成了亂碼 這也是一類常見問題 現(xiàn)在 介紹一些與字符集有關(guān)的NLS_LANG參數(shù) NLS_LANG格式 NLS_LANG = language_territory charset 有三個(gè)組成部分(語言 地域和字符集) 每個(gè)成分控制了NLS子集的特性 其中 language 指定服務(wù)器消息的語言 territory 指定服務(wù)器的日期和數(shù)字格式 charset 指定字符集 例如  AMERICAN_AMERICA US SCII AMERICAN _ AMERICA ZHS GBK 還有一些子集可以更明確定義NLS_LANG參數(shù)  DICT BASE 數(shù)據(jù)字典基本 表版本 DBTIMEZONE 數(shù)據(jù)庫時(shí)區(qū) NLS_LANGUAGE 語言 NLS_TERRITORY 地域 NLS_CURRENCY 本地貨幣字符 NLS_ISO_CURRENCY ISO貨幣字符 NLS_NUMERIC_CHARACTERS 小數(shù)字符和組 分隔開 NLS_CHARACTERSET 字符集 NLS_CALENDAR 日歷系統(tǒng) NLS_DATE_FORMAT 缺省的日期格式 NLS_DATE_LANGUAGE 缺省的日期語言 NLS_SORT 字符排序序列 NLS_TIME_FORMAT 時(shí)間格式 NLS_TIMESTAMP_FORMAT 時(shí)間戳格式 …… 通過props$動(dòng)態(tài)性能視圖 我們可以查看數(shù)據(jù)庫的字符集信息  $ sqlplus internal SQL desc props$ Name Type Nullable Default Comments NAME VARCHAR ( ) VALUE$ VARCHAR ( ) Y MENT$ VARCHAR ( ) Y SQL set arraysize SQL col value$ format a SQL select name value$ from props$ where name= NLS_CHARACTERSET ; NAME VALUE$ NLS_CHARACTERSET ZHS GBK SQL select * from sys props$; NAME VALUE$ DICT BASE DBTIMEZONE : NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_NUMERIC_CHARACTERS NLS_CHARACTERSET ZHS GBK NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD MON RR NLS_DATE_LANGUAGE AMERICAN NLS_SORT BINARY NLS_TIME_FORMAT HH MI SSXFF AM NLS_TIMESTAMP_FORMAT DD MON RR HH MI SSXFF AM NLS_TIME_TZ_FORMAT HH MI SSXFF AM TZH:TZM NLS_TIMESTAMP_TZ_FORMAT DD MON RR HH MI SSXFF AM TZH:TZM NLS_DUAL_CURRENCY $ NLS_P BINARY NLS_NCHAR_CHARACTERSET ZHS GBK NLS_RDBMS_VERSION NAME VALUE$ GLOBAL_DB_NAME SCPDB EXPORT_VIEWS_VERSION rows selected SQL 從結(jié)果可以看出  NLS_LANG = AMERICAN _ AMERICA ZHS GBK 雖然 數(shù)據(jù)庫的字符集是在create database的時(shí)候指定的 以后不允許改變 但在一個(gè)已經(jīng)建立好的數(shù)據(jù)庫上 我們可以通過修改SYS PROPS$來修改主要是對(duì)應(yīng)客戶端的顯示 與存儲(chǔ)無關(guān) 如 SQL conn / as sysdba Connected SQL SQL select * from sys props$ WHERE NAME= NLS_LANGUAGE ; NAME VALUE$ NLS_LANGUAGE AMERICAN SQL SQL UPDATE sys PROPS$ SET VALUE$= SIMPLIFIED CHINESE WHERE NAME= NLS_LANGUAGE ; row updated SQL SQL select * from sys props$ WHERE NAME= NLS_LANGUAGE ; NAME VALUE$ NLS_LANGUAGE SIMPLIFIED CHINESE SQL 通常出現(xiàn)問題的原因 可分為三種   服務(wù)器指定字符集與客戶字符集不同 而與加載數(shù)據(jù)字符集一致 解決方法 對(duì)于這種情況 只需要設(shè)置客戶端字符集與服務(wù)器端字符集一致就可以了 具體操作如下 * 查看當(dāng)前字符集 SQL select * from sys props$ WHERE NAME= NLS_CHARACTERSET ; NAME VALUE$ NLS_CHARACTERSET ZHS GBK SQL 可以看出 現(xiàn)在服務(wù)器端Oracle數(shù)據(jù)庫的字符集為 ZHS GBK * 根據(jù)服務(wù)器的字符集在客戶端作相應(yīng)的配置或者安裝Oracle的客戶端軟件時(shí)指定 如果還沒安裝客戶端 那么在安裝客戶端時(shí) 指定與服務(wù)器相吻合的字符集即可 如果已經(jīng)安裝好了客戶端 并且客戶端為 sql*net 以下版本 進(jìn)入Windows的系統(tǒng)目錄 編輯oracle ini文件 用US ASCII替換原字符集 重新啟動(dòng)計(jì)算機(jī) 設(shè)置生效 否則 如果 客戶端為 sql*net 以上版本 在Win 下 運(yùn) 行REGEDIT 第一步選HKEY_LOCAL_MACHINE 第二步選擇SOFARE 第三步選擇 Oracle 第四步選擇 NLS_LANG 鍵 入 與服 務(wù) 器 端 相 同 的 字 符 集 (本例為 HKEY_LOCAL_MACHINE\ SOFARE\ORACLE\NLS_LANG AMERICAN _ AMERICA ZHS GBK) 如果是UNIX客戶端 則  SQL conn / as sysdba Connected SQL SQL UPDATE sys PROPS$ SET VALUE$= SIMPLIFIED CHINESE WHERE NAME= NLS_LANGUAGE ; row updated SQL MIT; Commit plete SQL 服務(wù)器指定字符集與客戶字符集相同 與加載數(shù)據(jù)字符集不一致 解決方法 強(qiáng)制加載數(shù)據(jù)字符集與服務(wù)器端字符集一致 要做到這一點(diǎn) 可以通過重新創(chuàng)建數(shù)據(jù)庫 并選擇與原卸出數(shù)據(jù)一致的字符集 然后IMP數(shù)據(jù) 這種情況僅僅適用于空庫和具有同一種字符集的數(shù)據(jù) 解決這類問題 也可以先將數(shù)據(jù)加載到具有相同字符集的服務(wù)器上 然后用轉(zhuǎn)換工具卸出為foxbase 格式或access格式數(shù)據(jù)庫 再用轉(zhuǎn)換工具轉(zhuǎn)入到不同字符集的Oracle數(shù)據(jù)庫中 這樣就避免了Oracle字符集的困擾 目前數(shù)據(jù)庫格式轉(zhuǎn)換的工具很多 像power builder 以上版本提供的pipeline及Microsoft Access數(shù)據(jù)庫提供的數(shù)據(jù)導(dǎo)入/導(dǎo)出功能等 服務(wù)器指定字符集與客戶字符集不同 與輸入數(shù)據(jù)字符集不一致 對(duì)于這種情況 目前為止都還沒有太好的解決方法 通過上面的了解 我們知道 導(dǎo)致在后期使用數(shù)據(jù)庫時(shí)出現(xiàn)種種關(guān)于字符集的問題 多半是由于在數(shù)據(jù)庫設(shè)計(jì) 安裝之初沒有很好地考慮到以后的需要 所以 我們完全可以通過在服務(wù)器上和客戶端使用相同的字符集來避免由此類問題引出的麻煩 lishixinzhi/Article/program/Java/hx/201311/27019

創(chuàng)新互聯(lián)公司2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元陳倉做網(wǎng)站,已為上家服務(wù),為陳倉各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575

oracle 亂碼 如何解決

1、對(duì)于Oracle Enterprise Manager中的所有工具,有一個(gè)配置文件名為dbappscfg.properties,修改該文件即可解決上述問題。這個(gè)文件的位置在$ORACLE_HOME\sysman\config目錄下,用任何的文本編輯器打開該文件,在這個(gè)文件里面,找到這樣一項(xiàng),

# SQLPLUS_NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1

2、去掉注釋符#,同時(shí)將其修改為

SQLPLUS_NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

3、對(duì)于Windows操作系統(tǒng),還需要修改一項(xiàng),在文件中找到# SQLPLUS_SYSTEMROOT=c:\\WINNT40,去掉注釋符,將其修改為你所在機(jī)器的操作系統(tǒng)主目錄。如操作系統(tǒng)的主目錄在D盤的Winnt下,則將其修改為

SQLPLUS_SYSTEMROOT=d:\\WINNT。

對(duì)于后面一項(xiàng)的修改只對(duì)Windows操作系統(tǒng)進(jìn)行,對(duì)UNIX操作系統(tǒng)則不需要。如果在Windows操作系統(tǒng)中不修改該項(xiàng),在Oracle Enterprise Manager中,連接系統(tǒng)時(shí),會(huì)提示如下的錯(cuò)誤:

ORA-12560 TNS:protocol adapter error

或者

ORA-12545 Connect failed because target host or object does not exist

4、修改完成后,保存文件,退出編輯。重新連接SQL PLUS Worksheet,字符集亂碼問題得到解決,顯示正確的簡(jiǎn)體中文字符集。

問題: 使用Oracle Instant Client 出現(xiàn) ORA-12705: Cannot access NLS data files or invalid environment specified 錯(cuò)誤。

如果是Windows平臺(tái),注冊(cè)表里 \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 查找鍵 NLS_LANG,這個(gè)鍵由Oracle標(biāo)準(zhǔn)客戶端安裝創(chuàng)建, 值是 NA 。這個(gè)導(dǎo)致了 ORA-12705錯(cuò)誤。解決方法就是改名 NLS_LANG。

Linux下 如果環(huán)境變量 NLS_LANG 值是NA 會(huì)引起 ORA-12705 錯(cuò)誤,解決方法是刪除這個(gè)變量

unset NLS_LANG

oracle數(shù)據(jù)庫亂碼怎么解決

一、pl/sql developer 中文字段顯示亂碼

原因:因?yàn)閿?shù)據(jù)庫的編號(hào)格式和pl /sql developer的編碼格式不統(tǒng)一造成的。

二、查看和修改oracle數(shù)據(jù)庫字符集:

select userenv('language') from dual;

查詢結(jié)果:

SIMPLIFIED CHINESE_CHINA.AL32UTF8

--修改oracle數(shù)據(jù)庫字符集:(在SQL Plus中)

sql conn / as sysdba;

sql shutdown immediate;

database closed.

database dismounted.

oracle instance shut down.

sql startup mount;

oracle instance started.

total system global area 135337420 bytes

fixed size 452044 bytes

variable size 109051904 bytes

database buffers 25165824 bytes

redo buffers 667648 bytes

database mounted.

sql alter system enable restricted session;

system altered.

sql alter system set job_queue_processes=0;

ORACLE顯示中文為亂碼,怎么修改?

在Redhat上安裝Oracle10g沒有設(shè)定字符集,采用的是操作系統(tǒng)默認(rèn)字符集:WE8ISO8859P1,將字符集修改為:ZHS16GBK。由于過程不可逆,首先需要備份數(shù)據(jù)庫。\x0d\x0a1.數(shù)據(jù)庫全備\x0d\x0a\x0d\x0a2.查詢當(dāng)前字符集\x0d\x0aSQLselect*fromnls_database_parameterswhereparameter='NLS_CHARACTERSET';\x0d\x0aPARAMETERVALUE\x0d\x0a--------------------------------------------------------------------------------\x0d\x0aNLS_CHARACTERSETWE8ISO8859P1\x0d\x0a\x0d\x0a3.關(guān)閉數(shù)據(jù)庫\x0d\x0aSQLshutdownimmediate\x0d\x0aDatabaseclosed.\x0d\x0aDatabasedismounted.\x0d\x0aORACLEinstanceshutdown.\x0d\x0a\x0d\x0a4.啟動(dòng)數(shù)據(jù)庫到mount狀態(tài)\x0d\x0aSQLstartupmount\x0d\x0aORACLEinstancestarted.\x0d\x0aTotalSystemGlobalArea205520896bytes\x0d\x0aFixedSize1266608bytes\x0d\x0aVariableSize100666448bytes\x0d\x0aDatabaseBuffers100663296bytes\x0d\x0aRedoBuffers2924544bytes\x0d\x0aDatabasemounted.\x0d\x0a\x0d\x0a5.限制session\x0d\x0aSQLaltersystemenablerestrictedsession;\x0d\x0aSystemaltered.\x0d\x0a\x0d\x0a6.查詢相關(guān)參數(shù)并修改\x0d\x0aSQLshowparameterjob_queue_processes;\x0d\x0aNAMETYPEVALUE\x0d\x0a-----------------------------------------------------------------------------\x0d\x0ajob_queue_processesinteger10\x0d\x0a\x0d\x0aSQLshowparameteraq_tm_processes;\x0d\x0aNAMETYPEVALUE\x0d\x0a-----------------------------------------------------------------------------\x0d\x0aaq_tm_processesinteger0\x0d\x0a\x0d\x0aSQLaltersystemsetjob_queue_processes=0;\x0d\x0aSystemaltered.\x0d\x0a\x0d\x0a7.打開數(shù)據(jù)庫\x0d\x0aSQLalterdatabaseopen;\x0d\x0aDatabasealtered.\x0d\x0a\x0d\x0a8.修改字符集\x0d\x0aSQLalterdatabasecharactersetZHS16GBK;\x0d\x0aalterdatabasecharactersetZHS16GBK\x0d\x0a*\x0d\x0aERRORatline1:\x0d\x0aORA-12712:newcharactersetmustbeasupersetofoldcharacterset\x0d\x0a\x0d\x0a出現(xiàn)錯(cuò)誤提示,新字符集必須是老字符集的超集,也就原來字符集是新字符集的子集,可以再Oracle官方文檔上查詢字符集包含關(guān)系。下面使用Oracle內(nèi)部命令internal_use,跳過超集檢查,生產(chǎn)環(huán)境不建議使用此方法。\x0d\x0a\x0d\x0aSQLalterdatabasecharactersetinternal_useZHS16GBK;\x0d\x0aDatabasealtered.\x0d\x0a\x0d\x0a9.查詢當(dāng)前字符集\x0d\x0aSQLselect*fromnls_database_parameterswhereparameter='NLS_CHARACTERSET';\x0d\x0aPARAMETERVALUE\x0d\x0a--------------------------------------------------------------------------------\x0d\x0aNLS_CHARACTERSETZHS16GBK\x0d\x0a\x0d\x0a10.關(guān)閉數(shù)據(jù)庫\x0d\x0aSQLshutdownimmediate\x0d\x0aDatabaseclosed.\x0d\x0aDatabasedismounted.\x0d\x0aORACLEinstanceshutdown.\x0d\x0a\x0d\x0a11.啟動(dòng)數(shù)據(jù)庫到mount狀態(tài)\x0d\x0aSQLstartupmount\x0d\x0aORACLEinstancestarted.\x0d\x0aTotalSystemGlobalArea205520896bytes\x0d\x0aFixedSize1266608bytes\x0d\x0aVariableSize100666448bytes\x0d\x0aDatabaseBuffers100663296bytes\x0d\x0aRedoBuffers2924544bytes\x0d\x0aDatabasemounted.\x0d\x0a\x0d\x0a12.將相關(guān)參數(shù)改回原來值\x0d\x0aSQLaltersystemsetjob_queue_processes=10;\x0d\x0aSystemaltered.\x0d\x0a\x0d\x0a13.打開數(shù)據(jù)庫\x0d\x0aSQLalterdatabaseopen;\x0d\x0aDatabasealtered.


文章標(biāo)題:oracle亂碼怎么改 oracle亂碼解決
網(wǎng)站URL:http://weahome.cn/article/hjjjcd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部