免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
ORACLE 修改字符集

EXP遇到ORA-06552錯誤的解決( PLS-553: character set name is not recognized)2009-05-08 16:51有一個建好的數(shù)據(jù),Oracle 9.2.0.4 for linux,字符集是缺省的WE8ISO8859P1,沒有改成ZHS16GBK. 庫中暫時沒有任何數(shù)據(jù)。

由于字符集不是超集/子集關(guān)系,無法通過ALTER DATABASE CHARACTER SET修改字符集。

當(dāng)時時間緊張,就沒有重建數(shù)據(jù)庫,而是直接修改prop$表,將NLS_CHAR字符集改為ZHS16GBK。
update props$ set value$='ZHS16GBK' where name='NLS_CHARACTERSET';
重啟后建表、insert數(shù)據(jù),一切正常。。。直到今天要exp出數(shù)據(jù)。

執(zhí)行 exp userid=system owner=username ... 報錯!
即將導(dǎo)出指定的用戶…
. 正在導(dǎo)出 pre-schema 過程對象和操作
. 正在導(dǎo)出用戶 USERNAME 的外部函數(shù)庫名稱
. 導(dǎo)出 PUBLIC 類型同義詞
EXP-00008: 遇到 ORACLE 錯誤 6552
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-553: character set name is not recognized
EXP-00000: 導(dǎo)出終止失敗

隱隱感覺與當(dāng)時的字符集設(shè)置有關(guān)。http://www.eygle.com/special/NLS_CHARACTER_SET_03.htm: “正式修改字符集時,Oracle至少需要更改12張數(shù)據(jù)字典表,而這種直接更新props$表的方式只完成了其中十二分之一的工作,潛在的完整性隱患是可想而知的。”


但是如何解決呢?后來搜索到未公開的INTERNAL_USE用法,強制完成字符集一致化,解決了問題。


首先,確認(rèn)字符集是否修改的不徹底。
SELECT DISTINCT (NLS_CHARSET_NAME(CHARSETID)) CHARACTERSET,
DECODE(TYPE#, 1,
DECODE(CHARSETFORM, 1, 'VARCHAR2', 2, 'NVARCHAR2', 'UNKOWN'),
9,
DECODE(CHARSETFORM, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'),
96,
DECODE(CHARSETFORM, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),
112,
DECODE(CHARSETFORM, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN
FROM SYS.COL$
WHERE CHARSETFORM IN (1, 2)
AND TYPE# IN (1, 9, 96, 112);

如果上面的查詢的確顯示有多個字符集的設(shè)定,則進行如下處理:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;

COL VALUE NEW_VALUE CHARSET
SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
COL VALUE NEW_VALUE NCHARSET
SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';

--INTERNAL_USE是沒有寫在文檔中的參數(shù),用以強制完成字符集一致化
ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;

SHUTDOWN IMMEDIATE;
STARTUP;
-- 再次啟動數(shù)據(jù)庫一遍
SHUTDOWN IMMEDIATE;
STARTUP;

至此,EXP問題得到了解決。

注意:修改字符集只是修改了數(shù)據(jù)字典,并沒有對數(shù)據(jù)進行字符集轉(zhuǎn)換!
 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
oracle字符集問題
navicat連接oracle的錯誤:ora-12737:instant client l...
Oracle學(xué)習(xí)筆記(16)字符語言環(huán)境
Oracle的NLS設(shè)置
PLSQL顯示亂碼
oracle字符集查看修改
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服