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

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

oracle如何轉(zhuǎn)換編碼 修改oracle數(shù)據(jù)庫字符編碼

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

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

成都網(wǎng)站設(shè)計、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司介紹好的網(wǎng)站是理念、設(shè)計和技術(shù)的結(jié)合。創(chuàng)新互聯(lián)公司擁有的網(wǎng)站設(shè)計理念、多方位的設(shè)計風格、經(jīng)驗豐富的設(shè)計團隊。提供PC端+手機端網(wǎng)站建設(shè),用營銷思維進行網(wǎng)站設(shè)計、采用先進技術(shù)開源代碼、注重用戶體驗與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺化效果。

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

sql conn / as sysdba;

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

sql shutdown immediate;

database closed.

database dismounted.

oracle instance shut down.

第三步:啟動數(shù)據(jù)庫實例連接。

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ù)庫使用資源。

sql alter system enable restricted session;

system altered.

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

sql alter system set job_queue_processes=0;

system altered.

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

sql alter system set aq_tm_processes=0;

system altered.

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

sql alter database open;

database altered.

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

sql alter database character set internal_use GBK;

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

sql shutdown immediate;

第十步:啟動oracle進程。

sql startup;

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

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

如何修改oracle的字符集編碼

1. 備份數(shù)據(jù)庫中所有用戶的數(shù)據(jù)

以oracle用戶登陸,執(zhí)行以下命令

# export NLS_LANG = “SIMPLIFIED CHINESE_CHINA.UTF8”

保持與數(shù)據(jù)庫服務(wù)器端一致,這樣在exp導(dǎo)出時,就不會存在字符的轉(zhuǎn)換了,備份最原始的數(shù)據(jù)。

2. 評估UTF8轉(zhuǎn)換成ZHS16GBK的風險

轉(zhuǎn)換之前,要使用Oracle的csscan工具對數(shù)據(jù)庫掃描,評估字符集轉(zhuǎn)換前后,數(shù)據(jù)有可能的損壞情況。如果評估情況糟糕,那就絕對要放棄了。

先安裝屬于 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)換情況。然后得到三個文件:scan.txt、scan.out、scan.err。

查看scan.out,scan.err,可以看出mmsc用戶下的所有的數(shù)據(jù)都是可以轉(zhuǎn)換的,并且沒有出現(xiàn)轉(zhuǎn)換“Exceptional”的情況,因此可以更放心一點。

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

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

Alter Database Character Set INTERNAL_CONVERT/ INTERNAL_USE XXXX

怎樣更改oracle的編碼方式

如何更改Oracle字符集

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

Oracle支持字符集的更改,但是UTF8是Oracle中最大的字符集,也就是說UTF8是ZHS16GBK的嚴格超集。

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

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

1. 備份數(shù)據(jù)庫中所有用戶的數(shù)據(jù)

以oracle用戶登陸,執(zhí)行以下命令

# export NLS_LANG = “SIMPLIFIED CHINESE_CHINA.UTF8”

保持與數(shù)據(jù)庫服務(wù)器端一致,這樣在exp導(dǎo)出時,就不會存在字符的轉(zhuǎn)換了,備份最原始的數(shù)據(jù)。

2. 評估UTF8轉(zhuǎn)換成ZHS16GBK的風險

轉(zhuǎn)換之前,要使用Oracle的csscan工具對數(shù)據(jù)庫掃描,評估字符集轉(zhuǎn)換前后,數(shù)據(jù)有可能的損壞情況。如果評估情況糟糕,那就絕對要放棄了。

先安裝屬于 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)換情況。然后得到三個文件:scan.txt、scan.out、scan.err。

查看scan.out,scan.err,可以看出mmsc用戶下的所有的數(shù)據(jù)都是可以轉(zhuǎn)換的,并且沒有出現(xiàn)轉(zhuǎn)換“Exceptional”的情況,因此可以更放心一點。

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

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

Alter Database Character Set INTERNAL_CONVERT/ INTERNAL_USE XXXX

這是Oracle的非公開命令。“在使用這個命令時,Oracle會跳過所有子集及超集的檢查,在任意字符集之間進行強制轉(zhuǎ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)會提示出錯:

//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ù)據(jù)庫的字符集是否更改過來

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

VALUE$

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

ZHS16GBK

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

SQLselect spid,spname,spshortname from spinfovisual_hk

…...

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

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

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

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

#sqlplus “/ as sysdba”

SQLdrop user mmsc cascade;

SQLexit

再運行createuser.sql,生成mmsc用戶。

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

注意:先設(shè)置NLS_LANG要與當前數(shù)據(jù)庫的一致:ZHS16GBK。這樣,導(dǎo)出時用戶會話的NLS_LANG為UTF8,與原先的數(shù)據(jù)庫字符集一致;現(xiàn)在為ZHS16GBK,與此時的數(shù)據(jù)庫字符集一致。這樣,導(dǎo)入時,就會進行字符轉(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ù)庫中簡體、繁體中文,哈哈,沒有亂碼了,一切顯示正常。

緊接著進行驗證,也證明了:1個漢字此時只占用2個字符長度。問題解決了!


分享題目:oracle如何轉(zhuǎn)換編碼 修改oracle數(shù)據(jù)庫字符編碼
文章來源:http://weahome.cn/article/higgoo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部