日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

修改Oracle数据库字符集

發布時間:2024/9/20 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 修改Oracle数据库字符集 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

Oracle支持字符集的更改,但是UTF8是Oracle中最大的字符集,也就是說UTF8是ZHS16GBK的嚴格超集。
對于子集到超集的轉換,Oracle是允許的,但是對于超集到子集的轉換是不允許的。一般對于超集到子集的轉換,建議是通過dbca刪除原來的數據庫,重新再建庫,選擇正確的字符集,然后導入備份。
我的方案是:先備份數據,然后強制轉換字符集從UTF8到ZHS16GBK,然后導入備份數據。如果不行,才來重新建庫,設置字符集ZHS16GBK,導入備份數據。如果這還不行,就把更改字符集從ZHS16GBK到UTF8(這是安全的),再導入備份數據,恢復到原始狀況。這樣就有可能避開重新建庫的麻煩。

1. 備份數據庫中所有用戶的數據
以oracle用戶登陸,執行以下命令
# export NLS_LANG = “SIMPLIFIED CHINESE_CHINA.UTF8”
保持與數據庫服務器端一致,這樣在exp導出時,就不會存在字符的轉換了,備份最原始的數據。
2. 評估UTF8轉換成ZHS16GBK的風險
轉換之前,要使用Oracle的csscan工具對數據庫掃描,評估字符集轉換前后,數據有可能的損壞情況。如果評估情況糟糕,那就絕對要放棄了。
先安裝屬于 CSMIG 用戶的一套表和過程。以oracle用戶登陸UNIX,
#sqlplus “/ as sysdab”
SQL>@$ORACLE_HOME/ rdbms/admin/csminst.sql
SQL>exit
# $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中的所有數據,從字符集UTF8更改為ZHS16GBK的轉換情況。然后得到三個文件:scan.txt、scan.out、scan.err。
查看scan.out,scan.err,可以看出mmsc用戶下的所有的數據都是可以轉換的,并且沒有出現轉換“Exceptional”的情況,因此可以更放心一點。
3. 更改數據庫的字符集為ZHS16GBK
前面說過,通過命令“Alter Database Characeter Set XXXX”,實現從超集到子集的轉換,在Oracle是不允許的。但是該命令,提供這樣的命令方式:
Alter Database Character Set INTERNAL_CONVERT/ INTERNAL_USE XXXX
這是Oracle的非公開命令。“在使用這個命令時,Oracle會跳過所有子集及超集的檢查,在任意字符集之間進行強制轉換,所以,使用這個命令時你必須十分小心,你必須清楚這一操作會帶來的風險”。
以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”參數,系統會提示出錯:
//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;
此時,檢查一下數據庫的字符集是否更改過來
SQL> select value$ from props$ where name=’NLS_CHARACTERSET’;
VALUE$
-----------------
ZHS16GBK
緊接著檢查一下數據庫中簡體中文、繁體中文是否正常,不會出現亂碼。
SQL>select spid,spname,spshortname from spinfovisual_hk?
…...
非常不幸,我看到了一堆亂碼,這也證明了Oracle不支持字符集從超集到子集的更改,當時心里很緊張,很怕失敗,從而恢復到原樣。
但是根據以前的驗證,把UTF8下的備份導入到ZHS16GBK中去,是OK的,所以繼續嘗試。
4. 導入備份的用戶數據
還是以oracle用戶登陸UNIX, 先刪除庫中的用戶mmsc:
#sqlplus “/ as sysdba”
SQL>drop user mmsc cascade;
SQL>exit
再運行createuser.sql,生成mmsc用戶。
然后使用原來的備份文件,導入到mmsc用戶中:
注意:先設置NLS_LANG要與當前數據庫的一致:ZHS16GBK。這樣,導出時用戶會話的NLS_LANG為UTF8,與原先的數據庫字符集一致;現在為ZHS16GBK,與此時的數據庫字符集一致。這樣,導入時,就會進行字符轉換。
# export NLS_LANG = “SIMPLIFIED CHINESE_CHINA.ZHS16GBK”
#imp?mmsc/mmsc@mdspdb?file=DSMPD113_user_mmsc.dmp ignore=y fromuser=mmsc touser=mmsc
馬上查看數據庫中簡體、繁體中文,哈哈,沒有亂碼了,一切顯示正常。
緊接著進行驗證,也證明了:1個漢字此時只占用2個字符長度。問題解決了!

轉載于:https://blog.51cto.com/aixuexi/939990

總結

以上是生活随笔為你收集整理的修改Oracle数据库字符集的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91久久综合亚洲鲁鲁五月天 | 男人的天堂色 | 免费观看的毛片 | 国产精品一区二区三区免费看 | 欧美放荡性医生videos | 国产伦精品一区二区三区视频女 | 中文字幕人妻一区二区 | 国产电影一区在线观看 | 亚洲高清视频一区二区 | 久久精品网址 | 国产免费成人 | 熟妇人妻中文av无码 | 欧美黑人狂野猛交老妇 | 国产伦精品一区二区三区照片 | 极品尤物一区二区 | 在线视频久 | 亚洲欧美日韩偷拍 | 黄网在线播放 | 欧美性做爰大片免费 | 91福利视频网站 | 伊人久久精品一区二区三区 | 欧美日韩一区在线观看 | 久久精品国产亚洲av久 | 99国产精品免费视频 | 操你啦在线视频 | 国产中文字幕在线免费观看 | 撸撸在线视频 | 中文字幕在线观看视频一区二区 | 中文无码一区二区三区在线观看 | 自拍偷拍视频在线观看 | 亚洲AV综合色区无码国产播放 | 免费三级av| 黑人操少妇 | 6080电视影片在线观看 | 少妇大叫太粗太大爽一区二区 | 国产成人日韩 | 国产成人无码www免费视频播放 | 日韩大片一区 | 久久精精品久久久久噜噜 | 久久久久一区二区精码av少妇 | 久久6| 欧美区在线观看 | 黄色aaaa| 日韩精品一二三四 | √资源天堂中文在线视频 | av不卡高清| 国产精品福利小视频 | 国产色片在线观看 | 韩国美女一区二区 | xxxx久久| 亚洲欧美视频 | 日韩日韩 | 婷婷中文字幕在线 | av在线免费网址 | 久久久久亚洲av成人网人人网站 | 中文无码一区二区三区在线观看 | 亚洲 欧美 中文字幕 | 日韩欧美国产激情 | 日本亚洲视频 | 成人免费视频网址 | 国产又粗又猛又黄视频 | 毛片99 | japanesehdxxxx| 黑人爱爱视频 | 蜜臀久久精品久久久久久酒店 | 国产福利二区 | 久久久综合久久久 | 97se在线视频 | 欧洲一区二区在线观看 | 亚洲成人xxx| 欧美人妻一区二区三区 | 欧美精品欧美精品系列 | 热久久这里只有精品 | 三级全黄做爰在线观看 | 欧美日韩在线a | 少女视频的播放方法 | 久久岛国 | 日韩射| 在线观看亚洲大片短视频 | jizz在线播放 | 激情五月视频 | 1024中文字幕| 丁香婷婷在线 | 91在线无精精品一区二区 | 日韩一级黄色 | 亚洲人体在线 | 国产精品区在线 | 日韩乱码人妻无码系列中文字幕 | 成人性生交大片免费卡看 | 欧美成人精品欧美一 | 国产极品在线观看 | 免费在线精品视频 | 日本成人在线不卡 | 欧美午夜一区二区 | 婷婷社区五月天 | 羞羞动漫免费观看 | 台湾佬久久 | 中文字幕一区二区三区四区视频 | www.偷拍.com |