因為字元集的錯誤, 匯入了原本 dmp 檔, 不僅匯入過程錯誤, 也造成了 database 內出現了亂碼的 table , 連要刪除tablespace 都刪不掉(constraint索引, 限制條件的相依 ), 更不用說刪除table...最後忍痛把整個database刪除, 重新用DBCA建database, 過程的記錄如下, 如果有相同需求的人, 歡迎一起討論.
查看目前的字集設定
方法1)
SQL>SELECT parameter, value FROM v$nls_parameters WHERE parameter LIKE '%CHARACTERSET';
方法2)
SELECT value$ FROM sys.props$ WHERE name = 'NLS_CHARACTERSET' ;
有很多方法可以看編碼, google 一下就有了, 就不多說了.
我的想法是先把編碼改好, 再匯入dmp檔, 看有沒有得救.
所以主要是NLS_CHARACTERSET的值, 我要改成ZHT16MSWIN950, 語法如下:
#sqlplus / as sysdba
進入splplus 後
shutdown immediate;
startup mount;
alter database open;
alter database character set internal_use ZHT16MSWIN950;
shutdown immediate;
startup;
done;完成了.
再用上面的語法檢查一次.
PS: 其實在client有一個方法, 可以不用動到Server端, 但是你必須要每個client都是設定環境變數, 不是很理想.
但是如上面提到, 我的OracleDB還是一樣, 無法刪除亂碼的table, 所以後來還是整個database刪除, 再重建, OracleDB重建資料庫很麻煩, 我最後還是用UI界面處理, 下一篇再Post上來了.
沒有留言:
張貼留言