1、按win+R鍵調(diào)出windows運(yùn)行窗口,并在窗口中輸入“cmd”以便進(jìn)入命令行程序。
繁峙網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)成立于2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
2、在cmd命令行下輸入“sqlplus用戶名/密碼@服務(wù)名”來登錄數(shù)據(jù)庫,其中用戶名,密碼,服務(wù)名需要根據(jù)實(shí)際情況進(jìn)行替換。
登陸完成后,會發(fā)現(xiàn)提示語并不是中午,或者包含有亂碼,在sqlplus中,selectuserenv('language')fromdual;查看當(dāng)前數(shù)據(jù)庫的字符集。
為:SIMPLIFIEDCHINESE_CHINA.ZHS16GBK。需要把客戶端字符集和操作系統(tǒng)字符集都設(shè)置成這個就行了。
3、首先設(shè)置客戶端字符集,右擊我的電腦,選擇屬性。
4、在彈出的“屬性”對話框中,選擇“高級”-“環(huán)境變量”。
5、在環(huán)境變量中查找一個名為“NLS_LANG”的環(huán)境變量,如果找不到,則新建一個。
把變量值賦值為:“SIMPLIFIEDCHINESE_CHINA.ZHS16GBK”(需要根據(jù)實(shí)際數(shù)據(jù)庫服務(wù)器字符集進(jìn)行賦值)??蛻舳俗址O(shè)置成功。
6、在開始菜單中選擇“控制面板”-“區(qū)域和語言選項(xiàng)”,在該選項(xiàng)下對計(jì)算機(jī)語言進(jìn)行設(shè)置。
7、在“高級”選項(xiàng)下,選擇“非Unicode程序的語言”為中文,同時點(diǎn)擊確定。
點(diǎn)擊確定后會提示安裝字符集同時提示需要重啟計(jì)算機(jī)才能生效,重啟吧。
8、重啟完成后,再次進(jìn)入sqlplus,發(fā)現(xiàn)中文亂碼問題解決。
oracle數(shù)據(jù)庫查詢時出現(xiàn)亂碼,很可能是該數(shù)據(jù)庫的字符集設(shè)定不支持中文,但是表中數(shù)據(jù)含有中文,所以變?yōu)閬y碼。
如果是字符集原因,解決方法如下:
1、shutdown immediate; 關(guān)閉數(shù)據(jù)庫
2、startup mount; 開啟數(shù)據(jù)庫至掛載模式(只掛實(shí)例,不啟動數(shù)據(jù)庫)
3、alter system enable restricted session;開啟會話限制
4、alter system set aq_tm_processes=0;修改系統(tǒng)參數(shù)
5、alter system set job_queue_processes=0;修改系統(tǒng)參數(shù)
6、alter database open;啟動數(shù)據(jù)庫為open
7、alter database national character set internal_user (zhs16gbk);修改字符集
8、alter system disable restricted session;關(guān)閉會話限制
括號內(nèi)可填寫字符集類型,zhs16gbk、AL32UTF8等字符集都支持中文。
在Redhat上安裝Oracle 10g沒有設(shè)定字符集,采用的是操作系統(tǒng)默認(rèn)字符集:WE8ISO8859P1,將字符集修改為:ZHS16GBK。由于過程不可逆,首先需要備份數(shù)據(jù)庫。
1.數(shù)據(jù)庫全備
2.查詢當(dāng)前字符集
SQL select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
PARAMETER VALUE
---------------------------------------- ----------------------------------------
NLS_CHARACTERSET WE8ISO8859P1
3.關(guān)閉數(shù)據(jù)庫
SQL shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
4.啟動數(shù)據(jù)庫到mount狀態(tài)
SQL startup mount
ORACLE instance started.
Total System Global Area 205520896 bytes
Fixed Size 1266608 bytes
Variable Size 100666448 bytes
Database Buffers 100663296 bytes
Redo Buffers 2924544 bytes
Database mounted.
5.限制session
SQL alter system enable restricted session;
System altered.
6.查詢相關(guān)參數(shù)并修改
SQL show parameter job_queue_processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes integer 10
SQL show parameter aq_tm_processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 0
SQL alter system set job_queue_processes=0;
System altered.
7.打開數(shù)據(jù)庫
SQL alter database open;
Database altered.
8.修改字符集
SQL alter database character set ZHS16GBK;
alter database character set ZHS16GBK
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set
出現(xiàn)錯誤提示,新字符集必須是老字符集的超集,也就原來字符集是新字符集的子集,可以再Oracle官方文檔上查詢字符集包含關(guān)系。下面使用Oracle內(nèi)部命令internal_use,跳過超集檢查,生產(chǎn)環(huán)境不建議使用此方法。
SQL alter database character set internal_use ZHS16GBK;
Database altered.
9.查詢當(dāng)前字符集
SQL select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
PARAMETER VALUE
---------------------------------------- ----------------------------------------
NLS_CHARACTERSET ZHS16GBK
10.關(guān)閉數(shù)據(jù)庫
SQL shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
11.啟動數(shù)據(jù)庫到mount狀態(tài)
SQL startup mount
ORACLE instance started.
Total System Global Area 205520896 bytes
Fixed Size 1266608 bytes
Variable Size 100666448 bytes
Database Buffers 100663296 bytes
Redo Buffers 2924544 bytes
Database mounted.
12.將相關(guān)參數(shù)改回原來值
SQL alter system set job_queue_processes=10;
System altered.
13.打開數(shù)據(jù)庫
SQL alter database open;
Database altered.
1. 服務(wù)器指定字符集與客戶字符集不同,而與加載數(shù)據(jù)字符集一致。
解決方法:對于這種情況,只需要設(shè)置客戶端字符集與服務(wù)器端字符集一致就可以了,具體操作如下:
* 查看當(dāng)前字符集:
SQL select * from sys.props$
2 WHERE NAME=‘NLS_CHARACTERSET’;
NAME value$
NLS_CHARACTERSET ZHS16GBK
可以看出,現(xiàn)在服務(wù)器端Oracle數(shù)據(jù)庫的字符集為‘ZHS16GBK’
* 根據(jù)服務(wù)器的字符集在客戶端作相應(yīng)的配置或者安裝Oracle的客戶端軟件時指定:
如果還沒安裝客戶端,那么在安裝客戶端時,指定與服務(wù)器相吻合的字符集即可;如果已經(jīng)安裝好了客戶端,并且客戶端為 sql*net 2.0 以下版本,進(jìn)入Windows的系統(tǒng)目錄,編輯oracle.ini文件,用US7ASCII替換原字符集,重新啟動計(jì)算機(jī),設(shè)置生效;否則,如果,客戶端為 sql*net 2.0 以上版本,在Win98 下 運(yùn) 行REGEDIT,第一步選HKEY_LOCAL_MACHINE,第二步選擇SOFTWARE, 第三步選擇 Oracle, 第四步選擇 NLS_LANG, 鍵 入 與服 務(wù) 器 端 相 同 的 字 符 集
(本例為:HKEY_LOCAL_MACHINE/
SOFTWARE/ORACLE/NLS_LANG :AMERICAN _ AMERICA. ZHS16GBK)。
如果是UNIX客戶端,則:
SQL conn / as sysdba
Connected.
SQL SQL UPDATE sys.PROPS$ SET value$=‘SIMPLIFIED CHINESE’
2 WHERE NAME=‘NLS_LANGUAGE’;
2. 服務(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 builder5.0以上版本提供的pipeline及Microsoft Access數(shù)據(jù)庫提供的數(shù)據(jù)導(dǎo)入/導(dǎo)出功能等。
3. 服務(wù)器指定字符集與客戶字符集不同,與輸入數(shù)據(jù)字符集不一致。
對于這種情況,目前為止都還沒有太好的解決方法。
通過上面的了解,我們知道,導(dǎo)致在后期使用數(shù)據(jù)庫時出現(xiàn)種種關(guān)于字符集的問題,多半是由于在數(shù)據(jù)庫設(shè)計(jì)、安裝之初沒有很好地考慮到以后的需要,所以,我們完全可以通過在服務(wù)器上和客戶端使用相同的字符集來避免由此類問題引出的麻煩
怎樣修改查看Oracle字符集
a.數(shù)據(jù)庫服務(wù)器字符集select * from nls_database_parameters,其來源于props$,是表示數(shù)據(jù)庫的字符集。
b.客戶端字符集環(huán)境select * from nls_instance_parameters,其來源于v$parameter,
表示客戶端的字符集的設(shè)置,可能是參數(shù)文件,環(huán)境變量或者是注冊表
c.會話字符集環(huán)境 select * from nls_session_parameters,其來源于v$nls_parameters,表示會話自己的設(shè)置,可能是會話的環(huán)境變量或者是alter session完成,如果會話沒有特殊的設(shè)置,將與nls_instance_parameters一致。
客戶端的字符集要求與服務(wù)器一致,才能正確顯示數(shù)據(jù)庫的非Ascii字符。如果多個設(shè)置存在的時候,alter session環(huán)境變量注冊表參數(shù)文件
實(shí)際情況
我用select * from nls_database_parameters
PARAMETER VALUE
------------------------------ ------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET ZHS16GBK
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
PARAMETER VALUE
------------------------------ ------------------------------
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 10.2.0.1.0
說明我在創(chuàng)建數(shù)據(jù)庫時指定的字符集是ZHS16GBK,我用
update sys.props$ set value$='AL32UTF8' where name='NLS_CHARACTERSET';
修改了字符集,但插入中文時仍然有問題,這或許就如上面資料所說的通過修改SYS.PROPS$來修改主要是對應(yīng)客戶端的顯示,與存儲無關(guān),
所以仍舊是亂碼。
然后我重新創(chuàng)建了個數(shù)據(jù)庫,指定字符集為AL32UTF8,插入中文就沒問題了。
可見我們?nèi)绻跀?shù)據(jù)庫中顯示中文,在創(chuàng)建數(shù)據(jù)庫時一定喲指定好所用的字符集。
一、pl/sql developer 中文字段顯示亂碼
原因:因?yàn)閿?shù)據(jù)庫的編號格式和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;
當(dāng)前文章:oracle亂碼怎么修改,oracle中文亂碼解決
分享網(wǎng)址:http://aaarwkj.com/article38/dsiejsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、定制開發(fā)、自適應(yīng)網(wǎng)站、網(wǎng)站維護(hù)、網(wǎng)頁設(shè)計(jì)公司、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)