oracle 修改資料庫的字符集編碼為UTF 8

2021-06-09 14:31:59 字數 1710 閱讀 1860

1、檢視資料庫字符集 ?

資料庫伺服器字符集select * from nls_database_parameters,其**於props$,是表示資料庫的字符集。

客戶端字符集環境select * from nls_instance_parameters,其**於v$parameter,

表示客戶端的字符集的設定,可能是引數檔案,環境變數或者是登錄檔

會 話字符集環境 select * from nls_session_parameters,其**於v$nls_parameters,表示會話自己的設定,可能是會話的環境變數或者是alter session完成,如果會話沒有特殊的設定,將與nls_instance_parameters一致。

客戶端的字符集要求與伺服器一致,才能正確顯示資料庫的非ascii字元。如果多個設定存在的時候,alter session>環境變數》登錄檔》引數檔案

字符集要求一致,但是語言設定卻可以不同,語言設定建議用英文。如字符集是zhs16gbk,則nls_lang可以是american_america.zhs16gbk。

2、修改oracle的字符集,如下例把字符集gb2312修改為utf-8

步驟:1.在sql*plus 中,以dba登入

conn 使用者名稱 as sysdba

2.執行轉換語句:

shutdown immediate;

startup mount exclusive;

alter system enable restricted session;

alter system set job_queue_processes=0;

alter system set aq_tm_processes=0;

alter database open;

alter database national character set utf8;

shutdown immediate;

startup;

注意:如果沒有大物件,在使用過程中進行語言轉換沒有什麼影響,(切記設定的字符集必須是oracle支援,不然不能start)

按上面的做法就可以,但是可能會出現『ora-12717: cannot alter database national character set when

nclob data exists』 這樣的提示資訊

要解決這個問題有兩種方法

乙個是,利用internal_use 關鍵字修改區域設定,

還有乙個是利用re-create,但是re-create有點複雜,所以請用internal_use,

shutdown immediate;

startup mount exclusive;

alter system enable restricted session;

alter system set job_queue_processes=0;

alter system set aq_tm_processes=0;

alter database open;

alter database national character set internal_use utf8;

shutdown immediate;

startup;

如果按上面的做法做,national charset的區域設定就沒有問題 。

修改資料庫字符集

新增環境變數修改資料庫字符集設定環境變數 在my computer properties advanced environment variables system variables 新增環境變數設定,如 variable name nls lang,variable value simplifi...

修改資料庫的預設字符集

預設字符集下char和varchar不處理中文 這裡是修改字符集的方式和語句 mysql字符集詳解 點我 建資料庫的時候新增字符集 create datebase ii character set utf8 建表的時候新增字符集 default charset utf8 顯示表的字符集 show c...

修改oracle資料庫字符集

關閉db1,保留乙個節點 sql shutdown immediate 在db1上以root使用者執行,停止該節點的cluster服務 crsctl stop crs 在db2上檢視是否使用sfile啟動 sql show parameter spfile 若value為空,表示用pfile引數啟動...