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

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

oracle中怎么改編碼,oracle 中文編碼

怎樣更改oracle的編碼方式

如何更改Oracle字符集

我們提供的服務(wù)有:成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、十堰鄖陽(yáng)ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的十堰鄖陽(yáng)網(wǎng)站制作公司

國(guó)內(nèi)最常用的Oracle字符集ZHS16GBK(GBK 16-bit Simplified Chinese)能夠支持繁體中文,并且按照2個(gè)字符長(zhǎng)度存儲(chǔ)一個(gè)漢字。UTF8字符集是多字節(jié)存儲(chǔ),1個(gè)漢字(簡(jiǎn)體、繁體)有時(shí)采用3個(gè)字符長(zhǎng)度存儲(chǔ)。

Oracle支持字符集的更改,但是UTF8是Oracle中最大的字符集,也就是說(shuō)UTF8是ZHS16GBK的嚴(yán)格超集。

對(duì)于子集到超集的轉(zhuǎn)換,Oracle是允許的,但是對(duì)于超集到子集的轉(zhuǎn)換是不允許的。一般對(duì)于超集到子集的轉(zhuǎn)換,建議是通過(guò)dbca刪除原來(lái)的數(shù)據(jù)庫(kù),重新再建庫(kù),選擇正確的字符集,然后導(dǎo)入備份。

我的方案是:先備份數(shù)據(jù),然后強(qiáng)制轉(zhuǎn)換字符集從UTF8到ZHS16GBK,然后導(dǎo)入備份數(shù)據(jù)。如果不行,才來(lái)重新建庫(kù),設(shè)置字符集ZHS16GBK,導(dǎo)入備份數(shù)據(jù)。如果這還不行,就把更改字符集從ZHS16GBK到UTF8(這是安全的),再導(dǎo)入備份數(shù)據(jù),恢復(fù)到原始狀況。這樣就有可能避開(kāi)重新建庫(kù)的麻煩。

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 用戶的一套表和過(guò)程。以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)換的,并且沒(méi)有出現(xiàn)轉(zhuǎn)換“Exceptional”的情況,因此可以更放心一點(diǎn)。

3. 更改數(shù)據(jù)庫(kù)的字符集為ZHS16GBK

前面說(shuō)過(guò),通過(guò)命令“Alter Database Characeter Set XXXX”,實(shí)現(xiàn)從超集到子集的轉(zhuǎn)換,在Oracle是不允許的。但是該命令,提供這樣的命令方式:

Alter Database Character Set INTERNAL_CONVERT/ INTERNAL_USE XXXX

這是Oracle的非公開(kāi)命令?!霸谑褂眠@個(gè)命令時(shí),Oracle會(huì)跳過(guò)所有子集及超集的檢查,在任意字符集之間進(jìn)行強(qiáng)制轉(zhuǎn)換,所以,使用這個(gè)命令時(shí)你必須十分小心,你必須清楚這一操作會(huì)帶來(lái)的風(fēng)險(xiǎn)”。

以oracle用戶登陸UNIX,

#sqlplus “/ as sysdba”

SQL SHUTDOWN IMMEDIATE;

SQL STARTUP MOUNT;

SQL ALTER SESSION SET SQL_TRACE=TRUE;

SQL ALTER SYSTEM ENABLE RESTRICTED SESSION;

SQL ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

SQL ALTER SYSTEM SET AQ_TM_PROCESSES=0;

SQL ALTER DATABASE OPEN;

SQL ALTER DATABASE CHARACTER SET ZHS16GBK;

//如果不使用“INTERNAL_USE”參數(shù),系統(tǒng)會(huì)提示出錯(cuò):

//ERROR at line 1:

//ORA-12712: new character set must be a superset of old character set

SQL ALTER SESSION SET SQL_TRACE=FALSE;

SQL SHUTDOWN IMMEDIATE;

SQL STARTUP;

此時(shí),檢查一下數(shù)據(jù)庫(kù)的字符集是否更改過(guò)來(lái)

SQL select value$ from props$ where name=’NLS_CHARACTERSET’;

VALUE$

-----------------

ZHS16GBK

緊接著檢查一下數(shù)據(jù)庫(kù)中簡(jiǎn)體中文、繁體中文是否正常,不會(huì)出現(xiàn)亂碼。

SQLselect spid,spname,spshortname from spinfovisual_hk

…...

非常不幸,我看到了一堆亂碼,這也證明了Oracle不支持字符集從超集到子集的更改,當(dāng)時(shí)心里很緊張,很怕失敗,從而恢復(fù)到原樣。

但是根據(jù)以前的驗(yàn)證,把UTF8下的備份導(dǎo)入到ZHS16GBK中去,是OK的,所以繼續(xù)嘗試。

4. 導(dǎo)入備份的用戶數(shù)據(jù)

還是以oracle用戶登陸UNIX, 先刪除庫(kù)中的用戶mmsc:

#sqlplus “/ as sysdba”

SQLdrop user mmsc cascade;

SQLexit

再運(yùn)行createuser.sql,生成mmsc用戶。

然后使用原來(lái)的備份文件,導(dǎo)入到mmsc用戶中:

注意:先設(shè)置NLS_LANG要與當(dāng)前數(shù)據(jù)庫(kù)的一致:ZHS16GBK。這樣,導(dǎo)出時(shí)用戶會(huì)話的NLS_LANG為UTF8,與原先的數(shù)據(jù)庫(kù)字符集一致;現(xiàn)在為ZHS16GBK,與此時(shí)的數(shù)據(jù)庫(kù)字符集一致。這樣,導(dǎo)入時(shí),就會(huì)進(jìn)行字符轉(zhuǎn)換。

# export NLS_LANG = “SIMPLIFIED CHINESE_CHINA.ZHS16GBK”

#imp mmsc/mmsc@mdspdb file=DSMPD113_user_mmsc.dmp ignore=y fromuser=mmsc touser=mmsc

馬上查看數(shù)據(jù)庫(kù)中簡(jiǎn)體、繁體中文,哈哈,沒(méi)有亂碼了,一切顯示正常。

緊接著進(jìn)行驗(yàn)證,也證明了:1個(gè)漢字此時(shí)只占用2個(gè)字符長(zhǎng)度。問(wèn)題解決了!

oracle字符集編碼怎么修改

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

A、oracle server 端 字符集查詢

select userenv('language') from dual

其中NLS_CHARACTERSET 為server端字符集

NLS_LANGUAGE 為 server端字符顯示形式

B、查詢oracle client端的字符集

$echo $NLS_LANG

如果發(fā)現(xiàn)你select 出來(lái)的數(shù)據(jù)是亂碼,請(qǐng)把client端的字符集配置成與linux操作系統(tǒng)相同的字符集。如果還是有亂碼,則有可能是數(shù)據(jù)庫(kù)中的數(shù)據(jù)存在問(wèn)題,或者是oracle服務(wù)端的配置存在問(wèn)題。

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í)我們可以跳過(guò)超集的檢查做更改:

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" 語(yǔ)句

關(guān)閉當(dāng)前ssh窗口。

如何修改oracle的字符集編碼

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 用戶的一套表和過(guò)程。以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)換的,并且沒(méi)有出現(xiàn)轉(zhuǎn)換“Exceptional”的情況,因此可以更放心一點(diǎn)。

3. 更改數(shù)據(jù)庫(kù)的字符集為ZHS16GBK

前面說(shuō)過(guò),通過(guò)命令“Alter Database Characeter Set XXXX”,實(shí)現(xiàn)從超集到子集的轉(zhuǎn)換,在Oracle是不允許的。但是該命令,提供這樣的命令方式:

Alter Database Character Set INTERNAL_CONVERT/ INTERNAL_USE XXXX

如何查看及修改oracle編碼格式方法?

查看及修改oracle編碼格式方法:

1、查看oracle數(shù)據(jù)庫(kù)字符集:

select userenv('language') from dual;

查詢結(jié)果:

SIMPLIFIED CHINESE_CHINA.AL32UTF8

2、修改oracle數(shù)據(jù)庫(kù)字符集:(在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;

system altered.

sql alter system set aq_tm_processes=0;

system altered.

sql alter database open;

database altered.

sql alter database character set internal_use UTF8

sql shutdown immediate;

sql startup;

oracle數(shù)據(jù)庫(kù)怎么修改編碼格式utf-8

以下內(nèi)容為固定寫(xiě)法,可以修改數(shù)據(jù)庫(kù)編碼格式。

第一步:通過(guò)系統(tǒng)管理員權(quán)限登錄數(shù)據(jù)庫(kù)。

sql conn / as sysdba;

第二步:關(guān)閉數(shù)據(jù)庫(kù)和實(shí)例連接。

sql shutdown immediate;

database closed.

database dismounted.

oracle instance shut down.

第三步:?jiǎn)?dòng)數(shù)據(jù)庫(kù)實(shí)例連接。

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.

第四步:限制其它用戶連接數(shù)據(jù)庫(kù)使用資源。

sql alter system enable restricted session;

system altered.

第五步:設(shè)置作業(yè)進(jìn)行為0個(gè)。

sql alter system set job_queue_processes=0;

system altered.

第六步:設(shè)置啟動(dòng)時(shí)間管理器的數(shù)量為0

sql alter system set aq_tm_processes=0;

system altered.

第七步:打開(kāi)數(shù)據(jù)庫(kù)連接

sql alter database open;

database altered.

第八步:修改需要的編碼格式

sql alter database character set internal_use GBK;

第九步:關(guān)閉連接。

sql shutdown immediate;

第十步:?jiǎn)?dòng)oracle進(jìn)程。

sql startup;

備注:常用的有:UTF-8,GBK 。

UTF-8:是一種針對(duì)Unicode的可變長(zhǎng)度字符編碼,又稱萬(wàn)國(guó)碼。由Ken Thompson于1992年創(chuàng)建。現(xiàn)在已經(jīng)標(biāo)準(zhǔn)化為RFC 3629。UTF-8用1到6個(gè)字節(jié)編碼UNICODE字符。用在網(wǎng)頁(yè)上可以同一頁(yè)面顯示中文簡(jiǎn)體繁體及其它語(yǔ)言(如英文,日文,韓文)。

oracle11g數(shù)據(jù)庫(kù)怎么改編碼格式

首先查看oracle數(shù)據(jù)庫(kù)的編碼:

SQL select * from nls_database_parameters where parameter ='NLS_CHARACTERSET';

修改字符集編碼(這會(huì)對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)有直接的影響,謹(jǐn)慎操作):

SQLconn /as sysdba

SQLshutdown immediate;

SQLstartup mount;

SQLALTER SYSTEM ENABLE RESTRICTED SESSION;

SQL ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

SQL ALTER SYSTEM SET AQ_TM_PROCESSES=0;

SQLalter database open;

SQLALTER DATABASE character set INTERNAL_USE ZHS16GBK;

SQLshutdown immediate;

SQL startup


網(wǎng)頁(yè)標(biāo)題:oracle中怎么改編碼,oracle 中文編碼
文章起源:http://weahome.cn/article/dsdjhde.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部