日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle服务端字符集

發(fā)布時間:2024/4/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle服务端字符集 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、oracle服務端字符集
SQL> select userenv('language') from dual ;

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8

二、oracle客戶段字符集

2.1 window環(huán)境下,修改注冊表ORACLE_HOME目錄下的環(huán)境變量NLS_LANG。

2.2 unix/linux環(huán)境下,就是環(huán)境變量$NLS_LANG

[python@master ~]$ echo $NLS_LANG

[python@master ~]$ locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
NLS_LANG=語言_地域_客戶端字符集 ?


(1).數(shù)據(jù)庫服務器字符集
select * from nls_database_parameters
來源于props$,是表示數(shù)據(jù)庫的字符集。

(2).客戶端字符集環(huán)境
select * from nls_instance_parameters
其來源于v$parameter,表示客戶端的字符集的設置,可能是參數(shù)文件,環(huán)境變量或者是注冊表

(3).會話字符集環(huán)境
select * from nls_session_parameters
來源于v$nls_parameters,表示會話自己的設置,可能是會話的環(huán)境變量或者是alter session完成,如果會話沒有特殊的設置,將與nls_instance_parameters一致。

5.1 修改server端字符集(不建議使用)

1.關(guān)閉數(shù)據(jù)庫
SQL>SHUTDOWN IMMEDIATE


2. 啟動到Mount
SQL>STARTUP MOUNT;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
--這里可以從父集到子集

SQL>ALTER DATABASE CHARACTER SET ZHS16GBK;
SQL>ALTER DATABASE NATIONAL CHARACTER SET ZHS16GBK;

--如果是從子集到父集,需要使用INTERNAL_USE 參數(shù),跳過超子集檢測

SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8;
SQL>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL32UTF8;
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP

注意:如果沒有大對象,在使用過程中進行語言轉(zhuǎn)換沒有什么影響,(切記設定的字符集必須是ORACLE支持,不然不能start) 按上面的做法就可以。


若出現(xiàn)‘ORA-12717: Cannot ALTER DATABASE NATIONAL CHARACTER SET when NCLOB data exists’ 這樣的提示信息,
要解決這個問題有兩種方法
1. 利用INTERNAL_USE 關(guān)鍵字修改區(qū)域設置,
2. 利用re-create,但是re-create有點復雜,所以請用internal_use

SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT EXCLUSIVE;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
SQL>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;
SQL>SHUTDOWN immediate;
SQL>startup;
如果按上面的做法做,National charset的區(qū)域設置就沒有問題

?
5.2 修改dmp文件字符集
上文說過,dmp文件的第2第3字節(jié)記錄了字符集信息,因此直接修改dmp文件的第2第3字節(jié)的內(nèi)容就可以‘騙’過oracle的檢查。這樣做理論上也僅是從子集到超集可以修改,但很多情況下在沒有子集和超集關(guān)系的情況下也可以修改,我們常用的一些字符集,如US7ASCII,WE8ISO8859P1,ZHS16CGB231280,ZHS16GBK基本都可以改。因為改的只是dmp文件,所以影響不大。
具體的修改方法比較多,最簡單的就是直接用UltraEdit修改dmp文件的第2和第3個字節(jié)。

比如想將dmp文件的字符集改為ZHS16GBK,可以用以下SQL查出該種字符集對應的16進制代碼:
SQL> select to_char(nls_charset_id('ZHS16GBK'), 'xxxx') from dual;
0354
然后將dmp文件的2、3字節(jié)修改為0354即可。
如果dmp文件很大,用ue無法打開,就需要用程序的方法了。
5.3客戶端字符集設置方法
???? 1)UNIX環(huán)境
???????? $NLS_LANG=“simplified chinese”_china.zhs16gbk
???????? $export NLS_LANG
???????? 編輯oracle用戶的profile文件
??? 2)Windows環(huán)境
???????? 編輯注冊表
???????? Regedit.exe ---》 HKEY_LOCAL_MACHINE ---》SOFTWARE ---》 ORACLE-HOME

?或者在窗口設置:

??????? set nls_lang=AMERICAN_AMERICA.ZHS16GBK

轉(zhuǎn)載于:https://www.cnblogs.com/hello-wei/p/9924002.html

總結(jié)

以上是生活随笔為你收集整理的oracle服务端字符集的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。