標籤:oracle characterset
在Oracle下用戶端中設定的字元集應於服務端保持一致,否則會出現亂碼,而Oracle的用戶端無論是在Windows/DOS系統下還是Unix系統下都可以通過環境變數NLS_LANG來加以控制,至於操作也很簡單,在這裡就不做過多的說明,在這裡主要說一下如何在Oracle的服務端下如何正確的修改字元集。在修改的時候建議使用sysdba身分識別驗證,要注意的是新修改的字元集必須為舊字元集的超集,不然Oracle上修改字元集會報ORA-12712錯誤。而在平時可以查詢系統檢視表得知當前Oracle資料庫中的字元集設定情況,如下:
SELECT * FROM v$nls_parameters WHERE PARAMETER IN ('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET'); #通過NLS_LANGUAGE,NLS_TERRITORY,NLS_CHARACTERSET這三個變數查看SELECT USERENV ('language') FROM DUAL;#或者通過USERENV函數也可以取得
操作方法也很簡單:
SQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.SQL> startup mount#進入維護模式ORACLE instance started.Total System Global Area 4275781632 bytesFixed Size 2260088 bytesVariable Size 905970568 bytesDatabase Buffers 3355443200 bytesRedo Buffers 12107776 bytesDatabase mounted.SQL> alter system enable restricted session;#在維護模式的基礎上再開啟restricted,防止其他使用者登入串連System altered.SQL> alter system set job_queue_processes=0;#關閉系統的觸發器System altered.SQL> alter system set aq_tm_processes=0;#指定隊列監視進程個數,預設是0,如果沒有改過可以不加System altered.SQL> alter database open;#開啟資料庫Database altered.SQL> alter database character set internal_use al32utf8;#進行字元集修改Database altered.SQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.SQL> startup#最後重啟修改字元集生效ORACLE instance started.Total System Global Area 4275781632 bytesFixed Size 2260088 bytesVariable Size 905970568 bytesDatabase Buffers 3355443200 bytesRedo Buffers 12107776 bytesDatabase mounted.Database opened.
Oracle下服務端字元集修改