2016-05-23 49 views
0

我正在致力於在我的數據庫中啓用全球化支持
我已經完成了字符集遷移到UTF(AL16UTF16)。
遷移後,我可以將Unicode字符從Java傳遞到Oracle並存儲在表的NVARCHAR2列中。此外,我可以從數據庫中檢索並傳遞給Java。oracle中的Unicode消息raise_application_error

但是,如果我使用Unicode數據做raise_application_error。它發送錯誤信息到Java像下面

; nested exception is java.sql.SQLException: ORA-20001: ¿¿¿ ¿¿¿¿¿¿¿¿¿

誰能告訴我有什麼不對?以及如何獲得java中的Unicode錯誤消息?

在此先感謝。

+0

請注意,'NVARCHAR2'數據類型包含_national字符集set_中的字符串,該字符串可能與_database字符集set_不同。沒有看到代碼就難以提供更具體的建議。 – collapsar

+0

感謝您的回覆@collapsar。問題是字符集遷移沒有正確完成。 – karthik

回答

0

問題是我已經完成字符集遷移使用以下步驟,但它不適用於我。

1.備份數據庫。
2.運行CSSCAN命令。
3.用RESTRICT模式重新啓動數據庫。
4.運行CSALTER腳本。
5.重新啓動數據庫。

之後,我嘗試使用以下步驟。

1.使用expdp命令備份數據庫。
2.創建一個具有所需字符集的新數據庫(Unicode AL32UTF8)。
3.將備份轉儲文件導入新創建的數據庫。

就是這樣。有用!

現在我不需要使用NVARCHAR2數據類型來存儲unicode數據(VARCHAR2本身存儲Unicode)。 raise_application_error也能正常工作(用Unicode數據向Java發送錯誤消息)。

謝謝。