oracle數(shù)據(jù)庫(kù)的字符集更改

創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司,提供網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,網(wǎng)頁設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);可快速的進(jìn)行網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,是專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
A、oracle server 端 字符集查詢
select userenv('language') from dual
其中NLS_CHARACTERSET 為server端字符集
NLS_LANGUAGE 為 server端字符顯示形式
B、查詢oracle client端的字符集
$echo $NLS_LANG
如果發(fā)現(xiàn)你select 出來的數(shù)據(jù)是亂碼,請(qǐng)把client端的字符集配置成與linux操作系統(tǒng)相同的字符集。如果還是有亂碼,則有可能是數(shù)據(jù)庫(kù)中的數(shù)據(jù)存在問題,或者是oracle服務(wù)端的配置存在問題。
C、server端字符集修改
*****************************************************************
* 更改字符集步驟方法(WE8ISO8859P1 -- ZHS16GBK) *
*****************************************************************
SQL
將數(shù)據(jù)庫(kù)啟動(dòng)到RESTRICTED模式下做字符集更改:
SQL conn /as sysdba
Connected.
SQL shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL startup mount
ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
SQL ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered.
SQL ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
System altered.
SQL ALTER SYSTEM SET AQ_TM_PROCESSES=0;
System altered.
SQL alter database open;
Database altered.
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
提示我們的字符集:新字符集必須為舊字符集的超集,這時(shí)我們可以跳過超集的檢查做更改:
SQL ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
Database altered.
SQL select * from v$nls_parameters;
略
19 rows selected.
重啟檢查是否更改完成:
SQL shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL startup
ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
SQL select * from v$nls_parameters;
略
19 rows selected.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
D、client端字符集修改
在 /home/oracle與 /root用戶目錄下的.bash_profile中
添加或修改 export NLS_LANG="AMERICAN_AMERICA.UTF8" 語句
關(guān)閉當(dāng)前ssh窗口。
A、oracle server 端字符集查詢
select userenv('language') from dual
其中NLS_CHARACTERSET 為server端字符集
NLS_LANGUAGE 為 server端字符顯示形式
B、查詢oracle client端的字符集
$echo $NLS_LANG
如果發(fā)現(xiàn)你select 出來的數(shù)據(jù)是亂碼,請(qǐng)把client端的字符集配置成與linux操作系統(tǒng)相同的字符集。如果還是有亂碼,則有可能是數(shù)據(jù)庫(kù)中的數(shù)據(jù)存在問題,或者是oracle服務(wù)端的配置存在問題。
C、server端字符集修改
將數(shù)據(jù)庫(kù)啟動(dòng)到RESTRICTED模式下做字符集更改:
SQL conn /as sysdba ?Connected.
SQL shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
如果發(fā)現(xiàn)你select 出來的數(shù)據(jù)是亂碼,請(qǐng)把client端的字符集配置成與linux操作系統(tǒng)相同的字符集。如果還是有亂碼,則有可能是數(shù)據(jù)庫(kù)中的數(shù)據(jù)存在問題,或者是oracle服務(wù)端的配置存在問題。
.?1.oracle server端字符集查詢? ? ? ? 復(fù)制代碼代碼如下:? ? select userenv('language') from dual;? ? server字符集修改:? ? 將數(shù)據(jù)庫(kù)啟動(dòng)到RESTRICTED模式下做字符集更改:??
oracle10g服務(wù)器端是安裝在AIX 6.0系統(tǒng)上,客戶端是安裝在windows server 2008 系統(tǒng)上,客戶端與服務(wù)器已成功連接,但是數(shù)據(jù)庫(kù)表里的中文字無法顯示,顯示為“?”,用SQLPLUS查得服務(wù)器端的字符集為AL16uTF16,如何修改該字符集使之支持中文呢?另外oracle10G客戶端的字符集需不需要設(shè)置,如何查看和設(shè)置呢?
1. 備份數(shù)據(jù)庫(kù)中所有用戶的數(shù)據(jù)
以oracle用戶登陸,執(zhí)行以下命令
# export NLS_LANG = “SIMPLIFIED CHINESE_CHINA.UTF8”
保持與數(shù)據(jù)庫(kù)服務(wù)器端一致,這樣在exp導(dǎo)出時(shí),就不會(huì)存在字符的轉(zhuǎn)換了,備份最原始的數(shù)據(jù)。
2. 評(píng)估UTF8轉(zhuǎn)換成ZHS16GBK的風(fēng)險(xiǎn)
轉(zhuǎn)換之前,要使用Oracle的csscan工具對(duì)數(shù)據(jù)庫(kù)掃描,評(píng)估字符集轉(zhuǎn)換前后,數(shù)據(jù)有可能的損壞情況。如果評(píng)估情況糟糕,那就絕對(duì)要放棄了。
先安裝屬于 CSMIG 用戶的一套表和過程。以oracle用戶登陸UNIX,
#sqlplus “/ as sysdab”
SQL@$ORACLE_HOME/ rdbms/admin/csminst.sql
SQLexit
# $ORACLE_HOME\bin\csscan -help
可以更清楚如何使用csscan。
# $ORACLE_HOME/bin/csscan system/sunday user=mmsc FROMCHAR=UTF8 TOCHAR=ZHS16GBK ARRAY=102400 PROCESS=3 csscan.log
以上命令意思是掃描用戶:mmsc中的所有數(shù)據(jù),從字符集UTF8更改為ZHS16GBK的轉(zhuǎn)換情況。然后得到三個(gè)文件:scan.txt、scan.out、scan.err。
查看scan.out,scan.err,可以看出mmsc用戶下的所有的數(shù)據(jù)都是可以轉(zhuǎn)換的,并且沒有出現(xiàn)轉(zhuǎn)換“Exceptional”的情況,因此可以更放心一點(diǎn)。
3. 更改數(shù)據(jù)庫(kù)的字符集為ZHS16GBK
前面說過,通過命令“Alter Database Characeter Set XXXX”,實(shí)現(xiàn)從超集到子集的轉(zhuǎn)換,在Oracle是不允許的。但是該命令,提供這樣的命令方式:
Alter Database Character Set INTERNAL_CONVERT/ INTERNAL_USE XXXX
當(dāng)前題目:如何修改oracle字符 oracle修改語句怎么寫
文章鏈接:http://chinadenli.net/article40/hgppho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、電子商務(wù)、動(dòng)態(tài)網(wǎng)站、網(wǎng)站改版、移動(dòng)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)