今天有同僚報有個資料庫不能用pl/sql developer檢視package或表結構。
開始以為是伺服器端與用戶端的字元集不一緻所至。
檢視資料庫的字元集為ZHS32GB18030
select * from V$NLS_PARAMETERS t where t.PARAMETER LIKE '%CHARACTERSET%';
PARAMETER VALUE
NLS_CHARACTERSET ZHS132GB18030
NLS_NCHAR_CHARACTERSET AL16UTF16
設定用戶端的NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS132GB18030
這樣設定之後錯誤依舊。
在我的記憶中ZHS32GB18030每一個字元應該是4個位元組
馬上檢視pl/sql developer的help-->support info拖到最後的Character Sets節,發現Character size: 3 byte(s)
于是在指令行啟動pl/sql developer,強行使pl/sql dev使用4位元組/字元:plsqldev.exe BPC=4 注:BPC (bytes per character).
終于問題解決。
結論:
當資料庫的字型集為ZHS32GB18030時,用pl/sql developer檢視package或表結構會報ora-01460
這應該是pl/sql developer的一個BUG,解決方法:在啟動pl/sql developer時加上一個參數BPC=4。如:plsqldev.exe BPC=4