『壹』 怎樣察看oracle資料庫的字元集
Oracle資料庫查看和修改伺服器端的字元集的方法是本文主要要介紹的內容,接下來救讓我們一起來了解一下這部分內容。
A、oracle server 端字元集查詢 select userenv('language') from al 其中NLS_CHARACTERSET 為server端字元集 NLS_LANGUAGE 為 server端字元顯示形式
B、查詢oracle client端的字元集 $echo $NLS_LANG 如果發現你select 出來的數據是亂碼,請把client端的字元集配置成與linux操作系統相同的字元集。如果還是有亂碼,則有可能是資料庫中的數據存在問題,或者是oracle服務端的配置存在問題。
C、server端字元集修改 將資料庫啟動到RESTRICTED模式下做字元集更改: SQL> conn /as sysdba Connected. SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount ORACLE instance started. Total System Global Area 236000356 bytes Fixed Size 451684 bytes Variable Size 201326592 bytes Database Buffers 33554432 bytes Redo Buffers 667648 bytes Database mounted. SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; System altered. SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; System altered. SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0; System altered. SQL> alter database open; Database altered. SQL> ALTER DATABASE CHARACTER SET ZHS16GBK; ALTER DATABASE CHARACTER SET ZHS16GBK ERROR at line 1: ORA-12712: new character set must be a superset of old character set 提示我們的字元集:新字元集必須為舊字元集的超集,這時我們可以跳過超集的檢查做更改: SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK; Database altered. SQL> select * from v$nls_parameters; 略 19 rows selected. 重啟檢查是否更改完成: SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 236000356 bytes Fixed Size 451684 bytes Variable Size 201326592 bytes Database Buffers 33554432 bytes Redo Buffers 667648 bytes Database mounted. Database opened. SQL> select * from v$nls_parameters; 略 19 rows selected. 我們看到這個過程和之前ALTER DATABASE CHARACTER SET操作的內部過程是完全相同的,也就是說INTERNAL_USE提供的幫助就是使Oracle資料庫繞過了子集與超集的校驗。 這一方法在某些方面是有用處的,比如測試;應用於產品環境大家應該格外小心,除了你以外,沒有人會為此帶來的後果負責。 結語(我們不妨再說一次): 對於DBA來說,有一個很重要的原則就是:不要把你的資料庫置於危險的境地! 這就要求我們,在進行任何可能對資料庫結構發生改變的操作之前,先做有效的備份,很多DBA沒有備份的操作中得到了慘痛的教訓。
D、client端字元集修改 在 /home/oracle與 /root用戶目錄下的。bash_profile中 添加或修改 export NLS_LANG="AMERICAN_AMERICA.UTF8" 語句
希望可以幫到您,謝謝!
『貳』 oracle如何查看客戶端的字元集
查看資料庫字元集,涉及三方面的字元集:
查詢oracle server端搏賣的字元集 :比較直觀的查詢方法是以種:SQL>selectuserenv(『language』) from al;結果類似如下:AMERICAN _ AMERICA. ZHS16GBK
如何查詢dmp文件的字元集 :用oracle的exp工具導出的dmp文件也包含了字元集信息,dmp文件的第2和第3個位元組記錄了dmp文件的字元集。如果dmp文件不大,比如只有 幾M或幾十M,可以用UltraEdit打開(16進制方式),看第2第3個位元組的內容,如0354,然後用以下SQL查出它對應的字元集:SQL> select nls_charset_name(to_number('0354','xxxx')) from al;如果dmp文件很大,比如有2G以上(這也是最常見的情況),用文本編輯器打開很慢或者完全打不開,可以用以下命令(在unix主機上):cat exp.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6 ,然後用上述SQL也可以得到它對應的字元集。
查詢oracle client端的字元集:在windows平台下,就是注冊表裡面相應OracleHome的NLS_LANG。還可以在dos窗口裡面自己設置,比如:set nls_lang=AMERICAN_AMERICA.ZHS16GBK ,這樣就隻影基滲逗響這個窗口裡面的環喊哪境變數。在unix平台下,就是環境變數NLS_LANG。
『叄』 如何查看Oracle資料庫的字元編碼
1、SELECTvalue$FROMsys.props$WHEREname='NLS_CHARACTERSET';
--查詢oracle相關參數
2、SELECT*FROMNLS_DATABASE_PARAMETERS;
(3)如何查Oracle資料庫字元集擴展閱讀:
OracleDatabase,又名OracleRDBMS,或簡稱Oracle。是甲骨文公司的一款關系資料庫管理系統。它是在資料庫領域一直處於領先地位的產品。
可以說Oracle資料庫系統是目前世界上流行的關系資料庫管理系統,系統可移植性好、使用方便、功能強,適用於各類大、中、小、微機環境。它是一種高效率、可靠性好的適應高吞吐量的資料庫解決方案。
ORACLE資料庫系統是美國ORACLE公司(甲骨文)提供的以分布式資料庫為核心的一組軟體產品,是目前最流行的客戶/伺服器(CLIENT/SERVER)或B/S體系結構的資料庫之一。
比如SilverStream就是基於資料庫的一種中間指改件。ORACLE資料庫是目前世界上使用最為廣泛的資料庫管理系統,作為一個通用的資料庫系統,它具有完整的數據管理功能;作為一個關系資料庫,它是一個完備關系的產品;作為分布式資料庫它實現了分布式處理功能。
但它的所有知識,只要在一種機型上學習了ORACLE知識,便能在各種類型的機器上使用鏈逗前它。
Oracle資料庫最新版棚清本為OracleDatabase12c。Oracle資料庫12c引入了一個新的多承租方架構,使用該架構可輕松部署和管理資料庫雲。
此外,一些創新特性可最大限度地提高資源使用率和靈活性,如OracleMultitenant可快速整合多個資料庫,而AutomaticDataOptimization和HeatMap能以更高的密度壓縮數據和對數據分層。
這些獨一無二的技術進步再加上在可用性、安全性和大數據支持方面的主要增強,使得Oracle資料庫12c成為私有雲和公有雲部署的理想平台。
參考資料:Oracle資料庫--網路
『肆』 如何查看及修改oracle編碼格式方法
查看及修改oracle編碼格式方法:枝尺x0dx0a1、查看oracle資料庫字元集:x0dx0aselect userenv('language') from al;x0dx0a查詢結果:x0dx0aSIMPLIFIED CHINESE_CHINA.AL32UTF8x0dx0a2、修改oracle數哪搭薯據庫字元集:(在SQL Plus中)x0dx0asql> conn / as sysdba;x0dx0asql> shutdown immediate;x0dx0adatabase closed.x0dx0adatabase dismounted.x0dx0aoracle instance shut down.x0dx0asql> startup mount;x0dx0aoracle instance started.x0dx0atotal system global area 135337420 bytesx0dx0afixed size 452044 bytesx0dx0avariable size 109051904 bytesx0dx0adatabase buffers 25165824 bytesx0dx0aredo buffers 667648 bytesx0dx0adatabase mounted.x0dx0asql> alter system enable restricted session;x0dx0asystem altered.x0dx0asql> alter system set job_queue_processes=0;x0dx0a李者system altered.x0dx0asql> alter system set aq_tm_processes=0;x0dx0asystem altered.x0dx0asql> alter database open;x0dx0adatabase altered.x0dx0asql> alter database character set internal_use UTF8x0dx0asql> shutdown immediate;x0dx0asql> startup;
『伍』 如何查看oracle用的什麼字元集
查看oracle字元集方法如下:
1、單機電腦做小腳windows圖標,輸入框中輸入「cmd」
(5)如何查Oracle資料庫字元集擴展閱讀:
甲骨文公司,全稱甲骨文股份有限公司(甲骨文軟體系統有限公司),是全球最大的企早圓業級軟體公司,總部位於美國加利福尼亞州的紅木灘。1989年正式進入中國市場。2013年,甲骨文已超越IBM,成為繼Microsoft後全球第二大軟體公司。
2017年6月7日發布的2017年美國《財富》500強,甲骨文公司排名第81位。 2017年6月,《2017年BrandZ最具價值全球品牌100強》公布,甲骨文公司排名第46位。
字元(Character)是各種文字和符號的總稱,包括各國家文字、標點符號、圖形符號、數字等。字元集(Character set)是多個字元的集合,字元集種類較多,每個字元集包含的字元個數不同,常見字元集名稱:ASCII字元集、GB2312字元集、BIG5字元集、 GB18030字元集、Unicode字元集等。計算機要准確的處理各種字元集文字,需要進行字元編碼,以便計算機能夠識別和存儲各種文字。中文文字數目大,而且還分為簡體中文和繁體中文兩種不同書寫規則的搏睜銀文基宴字,而計算機最初是按英語單位元組字元設計的,因此,對中文字元進行編碼,是中文信息交流的技術基礎。
網路-字元集
網路-甲骨文公司
『陸』 如何查看oracle資料庫的字元集
資料庫服廳寬務器字元集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。
涉及三方面的字元集,
1. oracel server端的字元集;
2. oracle client端的字元集;
3. dmp文件的字元集。
在做數據導入的時候,需要這三個字元集都一致才能正確導入。
2.1 查詢oracle server端的字元集
有很多種方法可以查出oracle server端的字元集,比較直觀的查詢方法是以下這種:
SQL> select userenv('language') from al;
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
SQL>select userenv(『language』) from al;
AMERICAN _ AMERICA. ZHS16GBK
2.2 如何查詢dmp文件的字元集
用oracle的exp工具導出的dmp文件也包含了字元集信息,dmp文件的第2和第3個位元組記錄了dmp文件的字元集。如果dmp文件不大,比如只有幾M或幾十M,可以用UltraEdit打開(16進制方式),看第2第3個位元組的內容,如0354,然後用以下SQL查出它對應的字元集:
SQL> select nls_charset_name(to_number('0354','xxxx')) from al;
ZHS16GBK
如果dmp文件很大,比如有2G以上(這也是最常見的情況),用文本編輯器打開很慢或者完全打不開,可以用以下命令(在unix主機上):
cat exp.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6
然後用上述SQL也可以得到它對應的字元集。
2.3 查詢oracle client端的字元集
在windows平台下,就是注冊表裡面相應OracleHome的NLS_LANG。還可以在dos窗口裡早辯面自己設置,
比如: set nls_lang=AMERICAN_AMERICA.ZHS16GBK
這樣就隻影響這個窗口裡面的環境變數。
在unix平台下,就是環境變數NLS_LANG。
$echo $NLS_LANG
AMERICAN_AMERICA.ZHS16GBK
如果檢查的結果發現server端與client端字元集不一致,請統一修改為同server端相同的字元集。
補充:
(1).資料庫伺服器字元集
select * from nls_database_parameters
來源於props$,是表示資料庫的字元集。
(2).客戶端字元集環境
select * from nls_instance_parameters
其來源於v$parameter,表示客戶端的字元集的設置,可能是參數文件,環境變數或者是注冊表
(3).會話字元集環境
select * from nls_session_parameters
來源於v$nls_parameters,表示會話自己的設置,可能是會話的環境變數或者是alter session完成,如果會話沒有特殊的設置,將與nls_instance_parameters一致。
(4).客戶端扮睜亮的字元集要求與伺服器一致,才能正確顯示資料庫的非Ascii字元。
如果多個設置存在的時候,NLS作用優先順序別:Sql function > alter session > 環境變數或注冊表> 參數文件> 資料庫默認參數
字元集要求一致,但是語言設置卻可以不同,語言設置建議用英文。如字元集是zhs16gbk,則nls_lang可以是American_America.zhs16gbk。
『柒』 全面認識Oracle資料庫字元集
什麼是Oracle字元集
Oracle字元集是一個位元組數據解釋的符號集合,有大小之分,有相互的包容關系。
Oracle支持國家語言的體系結構允許你使用本地化語言來存儲,處理,檢索數據。它使資料庫工具,錯誤消息,排序次序,日期,時間,貨幣,數字和日歷自動適應本地化語言和平台。
影響oracle資料庫字元集最重要的參數是NLS_LANG參數。它的格式如下:
NLS_LANG = language_territory.charset
它有三個組成部分(語言、地域和字元集),每個成分控制了NLS子集的特性。其中:
Language指定伺服器消息的語言,territory指定伺服器的日期和數字格式,charset指定字元集。如:AMERICAN _ AMERICA. ZHS16GBK。
從NLS_LANG的組成我們可以看出,真正影響資料庫字元集的其實是第三部分。所以兩個資料庫之間的字元集只要第三部分一樣就可以相互導入導出數據,前面影響的只是提示信息是中文還是英文。
如何查詢Oracle的字元集
很多人都碰到過因為字元集不同而使數據導入失敗的情況。這涉及三方面的字元集,一是Oracel server端的字元集,二是oracle client端的字元集;三是dmp文件的字元派緩集。在做數據導入的時候,需要這三個字元集都一致才能正確導入。
1、查詢Oracle Server端的字元集
有很多種方法可以查出oracle server端的字元集,比較直觀的查塵鏈模詢方法是以下這種:
SQLselect userenv(『language』) from al;
結果類似如下:AMERICAN _ AMERICA. ZHS16GBK.
2、如何查詢dmp文件的字元集
用Oracle的exp工具導出的dmp文件也包含了字元集信息,dmp文件的喚並第2和第3個位元組記錄了dmp文件的字元集。如果dmp文件不大,比如只有幾M或幾十M,可以用UltraEdit打開(16進制方式),看第2第3個位元組的內容,如0354,然後用以下SQL查出它對應的字元集:
SQL select nls_charset_name(to_number(','xxxx')) from al; ZHS16GBK
如果dmp文件很大,比如有2G以上(這也是最常見的情況),用文本編輯器打開很慢或者完全打不開,可以用以下命令(在unix主機上):
cat exp.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6
然後用上述SQL也可以得到它對應的字元集。
3、查詢Oracle client端的字元集
這個比較簡單。在Windows平台下,就是注冊表裡面相應OracleHome的NLS_LANG.還可以在Dos窗口裡面自己設置,比如:
set nls_lang=AMERICAN_AMERICA.ZHS16GBK
這樣就隻影響這個窗口裡面的環境變數。在Unix平台下,就是環境變數NLS_LANG.
$echo $NLS_LANG AMERICAN_AMERICA.ZHS16GBK
如果檢查的結果發現Server端與Client端字元集不一致,請統一修改為同Server端相同的字元集。
修改Oracle的字元集
上文說過,oracle的字元集有互相的包容關系。
如us7ascii就是zhs16gbk的子集,從us7ascii到zhs16gbk不會有數據解釋上的問題,不會有數據丟失。在所有的字元集中utf8應該是最大,因為它基於unicode,雙位元組保存字元(也因此在存儲空間上佔用更多)。
一旦資料庫創建後,資料庫的字元集理論上講是不能改變的。因此,在設計和安裝之初考慮使用哪一種字元集十分重要。根據Oracle的官方說明,字元集的轉換是從子集到超集受支持,反之不行。如果兩種字元集之間根本沒有子集和超集的關系,那麼字元集的轉換是不受oracle支持的。對資料庫server而言,錯誤的修改字元集將會導致很多不可測的後果,可能會嚴重影響資料庫的正常運行,所以在修改之前一定要確認兩種字元集是否存在子集和超集的關系。一般來說,除非萬不得已,我們不建議修改oracle資料庫server端的字元集。特別說明,我們最常用的兩種字元集ZHS16GBK和ZHS16CGB231280之間不存在子集和超集關系,因此理論上講這兩種字元集之間的相互轉換不受支持。
修改Server端字元集(不建議使用):
在Oracle 8之前,可以用直接修改數據字典表props$來改變資料庫的字元集。但Oracle8之後,至少有三張系統表記錄了資料庫字元集的信息,只改props$表並不完全,可能引起嚴重的後果。正確的修改方法如下:
$sqlplus /nolog SQLconn / as sysdba;
若此時資料庫伺服器已啟動,則先執行SHUTDOWN IMMEDIATE命令關閉資料庫伺服器,然後執行以下命令:
SQLSTARTUP MOUNT;
SQLALTER SYSTEM ENABLE RESTRICTED SESSION;
SQLALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQLALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQLALTER DATABASE OPEN;
SQLALTER DATABASE CHARACTER SET ZHS16GBK;
SQLALTER DATABASE national CHARACTER SET ZHS16GBK;
SQLSHUTDOWN IMMEDIATE; SQLSTARTUP
修改dmp文件字元集:
上文說過,dmp文件的第2第3位元組記錄了字元集信息,因此直接修改dmp文件的第2第3位元組的內容就可以『騙』過oracle的檢查。這樣做理論上也僅是從子集到超集可以修改,但很多情況下在沒有子集和超集關系的情況下也可以修改,我們常用的一些字元集,如US7ASCII,WE8ISO8859P1,ZHS16CGB231280,ZHS16GBK基本都可以改。因為改的只是dmp文件,所以影響不大。
具體的修改方法比較多,最簡單的就是直接用UltraEdit修改dmp文件的第2和第3個位元組。比如想將dmp文件的字元集改為ZHS16GBK,可以用以下SQL查出該種字元集對應的16進制代碼:
SQL select to_char(nls_charset_id('ZHS16GBK'), 'xxxx') from al; 0354
然後將dmp文件的2、3位元組修改為0354即可。
如果dmp文件很大,用ue無法打開,就需要用程序的方法了。網上有人用java存儲過程寫了轉換的程序(用java存儲過程的好處是通用性教好,缺點是比較麻煩)。我在Windows下測試通過。但要求Oracle資料庫一定要安裝JVM選項。
『捌』 如何查看和修改Oracle資料庫伺服器端的字元集
A、oracle server 端字元集查詢
select userenv('language') from al
其中NLS_CHARACTERSET 為server端字元集
NLS_LANGUAGE 為 server端字元顯示形式
B、查詢oracle client端的字元集
$echo $NLS_LANG
如果發現你select 出來的數據是亂碼,請把client端的字元集配置成與linux操作系統相同的字元集。如果還是有亂碼,則有可能是資料庫中的數據存在問題,或者是oracle服務端的配置存在問題。
C、server端字元集修改
將資料庫啟動到RESTRICTED模式下做字元集更改:
SQL> conn /as sysdba Connected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
如果發現你select 出來的數據是亂碼,請把client端的字元集配置成與linux操作系統相同的字元集。如果還是有亂碼,則有可能是資料庫中的數據存在問題,或者是oracle服務端的配置存在問題。
.1.oracle server端字元集查詢 復制代碼代碼如下: select userenv('language') from al; server字元集修改: 將資料庫啟動到RESTRICTED模式下做字元集更改:&??
oracle10g伺服器端是安裝在AIX 6.0系統上,客戶端是安裝在windows server 2008 系統上,客戶端與伺服器已成功連接,但是資料庫表裡的中文字無法顯示,顯示為「?」,用SQLPLUS查得伺服器端的字元集為AL16uTF16,如何修改該字元集使之支持中文呢?另外oracle10G客戶端的字元集需不需要設置,如何查看和設置呢?
『玖』 如何查詢Oracle的字元集
用以下命令查看oracle字元集:
select userenv('language') from al;
『拾』 怎樣修改查看Oracle字元集
[Q]怎麼樣查看資料庫字元集 [A]資料庫伺服器字元集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>環境變數>注冊表>參數文件字元集要求一致 但是語言設置卻可以不同 語言設置建議用英文 如字租者符集是zhs gbk 則nls_lang可以是American_America zhs gbk [Q]怎麼樣修改字元集 [A] i以上版本可以通過alter database來修改字元集 但也只限於子集到超集 不建議修改props$表 將可能導致嚴重錯誤 陵啟Startup nomount;Alter database mount exclusive;Alter system enable restricted session;Alter system set job_queue_process= ;Alter database open;Alter database character set zhs gbk; lishixin/Article/program/Oracle/201311/17182