Oracle 10中修改字符集(character set)
Oracle 10.2.0.3資料庫原來的字符集是ZHS16GBK,為了支援更多的漢字,需要修改為ZHS32GB18030。
我首先想到原來在9i上修改字符集的方法,過程如下:
[email protected]> shutdown immediate [email protected]> alter system enable restricted session; |
暈啊,ZHS32GB18030字符集明明是ZHS16GBK的超集,查metalink才知道,原來在Oracle 10G中,修改字符集需要用csalter配合csscan完成。過程如下:
% cd $ORACLE_HOME/rdbms/admin% sqlplus sys/password as sysdba
SQL> START csminst.sql
安裝csscan
[email protected][/home/oracle]> sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Wed Dec 23 19:58:21 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options [email protected]> set termout on [email protected]> set echo on [email protected]> spool /tmp/csminst.log [email protected]> @?/rdbms/admin/csminst.sql [email protected]> rem [email protected]> rem NAME [email protected]> rem csminst.sql ... 省略n行 ... [email protected]> rem ***************************************************************** [email protected]> rem CSMV$EXTABLES lists all distinct objects to be scaned [email protected]> rem ***************************************************************** [email protected]> create or replace view csmig.csmv$extables 2 (obj#, usr#, property) 3 as 4 select distinct(obj#), usr#, property 5 from csm$extables where property=0; View created. [email protected]> / View created. [email protected]> commit 2 / Commit complete. [email protected]> exit; Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options |
安裝後會自動退出plsql,可以檢查/tmp/csminst.log檔案,檢視安裝的詳細日誌。
測試csscan是否安裝成功
[email protected][/home/oracle]> csscan table=sys.sql_version$ fromchar=zhs16gbk tochar=zhs32gb18030 log=instchkc capture=n process=1 array=1024000 Character Set Scanner v2.1 : Release 10.2.0.0.0 - Production on Wed Dec 23 20:15:30 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved. Username: / as sysdba (這裡輸入使用者名稱密碼) Password: Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options Enumerating table to scan... . process 1 scanning SYS.SQL_VERSION$[AAAAIDAABAAAA/xAAA] Creating Database Scan Summary Report... Creating Individual Exception Report... Scanner terminated successfully. |
如果顯示Scanner terminated successfully.證明csscan安裝成功,會生成如下三個檔案。把這三個檔案刪除。
[email protected][/home/oracle]> ls -l instchkc* -rw-r--r-- 1 oracle oinstall 1357 Dec 23 20:16 instchkc.err -rw-r--r-- 1 oracle oinstall 504 Dec 23 20:16 instchkc.out -rw-r--r-- 1 oracle oinstall 5481 Dec 23 20:16 instchkc.txt |
開始正式執行csscan,下一步的csalter過程依賴這一步的執行結果。
[email protected][/home/oracle]> csscan full=y tochar=zhs32gb18030 array=1024000 process=2 Character Set Scanner v2.1 : Release 10.2.0.0.0 - Production on Wed Dec 23 20:21:14 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved. Username: / as sysdba (這裡輸入使用者名稱密碼) Password: Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options Enumerating tables to scan... . process 1 scanning SYS.SOURCE$[AAAABIAABAAAAIRAAA] . process 2 scanning SYS.TYPE$[AAAAC1AABAAAAURAAA] ...省略n行... . process 2 scanning SYS.WRH$_INST_CACHE_TRANSFER[AAAMgoAADAAABNhAAA] . process 1 scanning SYSTEM.LOGMNRC_GTLO[AAABa0AADAAAAZhAAA] . process 2 scanning SYS.WRH$_DLM_MISC[AAAMhlAADAAAA5RAAA] Creating Database Scan Summary Report... Creating Individual Exception Report... Scanner terminated successfully. |
執行csalter,修改字符集
[email protected][/home/oracle]> sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Wed Dec 23 20:34:12 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options [email protected]> @?/rdbms/admin/csalter.plb 4 rows created. Function created. Function created. Procedure created. This script will update the content of the Oracle Data Dictionary. Please ensure you have a full backup before initiating this procedure. Would you like to proceed (Y/N)?y old 6: if (UPPER('&conf') <> 'Y') then new 6: if (UPPER('y') <> 'Y') then Checking data validility... begin converting system objects PL/SQL procedure successfully completed. Alter the database character set... CSALTER operation completed, please restart database PL/SQL procedure successfully completed. 4 rows deleted. Function dropped. Function dropped. Procedure dropped. |
重啟資料庫
[email protected]> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. [email protected]> startup ORACLE instance started. Total System Global Area 167772160 bytes Fixed Size 1218292 bytes Variable Size 71305484 bytes Database Buffers 88080384 bytes Redo Buffers 7168000 bytes Database mounted. Database opened. |
檢查字符集
[email protected]> select userenv('language') from dual; USERENV('LANGUAGE') ---------------------------------------------------- AMERICAN_AMERICA.ZHS32GB18030 |
結果顯示,修改成功
--end--
================================================================================================
執行csalter修改字符集;
對於RAC環境:
1. 修改CLUSTER_DATABASE引數為flase;
Alter system set cluster_database=flase scope=spfile;
Alter system setjob_queue_processes=0scope=spfile;
alter system setaq_tm_processes=0scope=spfile;
2. 啟動資料庫到單例項模式;
startuprestrict
spool switch.log
3. 執行csalter:
---- 以sys執行:@ ?/rdbms/admin/csalter.plb
---- 檢查執行csalter的輸出資訊,是否有錯誤;
如果執行那麼修改還原原始的引數:
Alter system set cluster_database=true scope=spfile;
Alter system setjob_queue_processes=old_valuescope=both sid=’*’;
alter system setaq_tm_processes=old_valuescope=both sid=’*’;
4. 重啟資料庫;
----shutdown immediate;
----startup
----檢查字符集是否修改成功
檢查alert log或執行如下sql:
select userenv('language') from dual;
================================================================================================安裝配置csscan工具;
用具有dba許可權的使用者執行@?/rdbms/admin/csminst.sql;
執行csscan進行掃描;
例如:
csscan system/oracle full=y FROMCHAR=WE8ISO8859P1TOCHAR=ZHS16GBK ARRAY=1024000 PROCESS=1
可以csscan help=y檢視幫助
Csscan執行結束後,預設會在當前目前下生存如下3個檔案:
[[email protected] oracle]$ ls -ltr scan*
-rw-r--r-- 1oracle dba 8239 Jul 4 16:56 scan.txt
-rw-r--r-- 1oracle dba 73078 Jul 4 16:56 scan.out
-rw-r--r-- 1oracle dba 1878 Jul 4 16:56 scan.err
Scan工具會把最近一次掃描的引數寫入到同義詞csm$parameters中,下次進行資料庫字符集轉換時,直接從該同義詞讀取資訊;
檢查scan.txt:
對於convertible, truncated的物件可以通過exp/imp來完成;
對於lossy的物件,可以用plsql進行匯出然後手工轉換編碼,然後刪除物件,等執行csalter命令修改字符集完成後,再將前面的物件匯入。
匯出convetitble和truncate的物件後,需要重新執行csscan工具;
================================================================================================
1.首先執行$ORACLE_HOME/rdbms/admin/csminst.sql,建立一些資料庫物件,包括資料庫使用者
2.備份Oracle資料庫,最好全庫備份;
3.使用csscan命令檢查字符集轉換是否可行.csscan有四種掃描模式:全庫掃描,按使用者掃描,按表掃描,按列掃描.因為我們是改變全庫的字符集,所以要用全庫掃描.並且要求有DBA許可權.
4.執行csscan掃描資料庫:csscan SYSTEM/testdb FULL=y TOCHAR=ZHS16GBK ARRAY=1024000 PROCESS=1
5.掃描結束後,會在當前目錄下產生三個檔案:scan.txt,scan.out,scan.err,我們更多的需要關注scan.err
6.可能需要多執行幾次csscan命令,以確保scan.err中沒有報錯,才能進行字元轉換.
7.沒有問題之後,然後執行$ORACLE_HOME/rdbms/admin/csalter.plb指令碼,進行轉化。轉化的過程中,需要注意,資料庫不能有別的session執行,否則會報錯.另外,由於在轉換的過程中讀取的是CSMIG使用者下的CSM$PARAMETERS表中的資料,因此在轉換前必須用csscan執行一次全庫掃描.
可能會遇到的問題:
Full database scan is required ----需要全表掃描
Exceptional data found in scanner result -----檢查scan.err應該還有錯誤報告
Sorry only one session is allowed to run this script -----還有別的session在執行,斷開連線後再試試.
相關推薦
Oracle 10中修改字符集(character set)
Oracle 10.2.0.3資料庫原來的字符集是ZHS16GBK,為了支援更多的漢字,需要修改為ZHS32GB18030。 我首先想到原來在9i上修改字符集的方法,過程如下: [email protected]> shutdown immediate
oracle 11g rac 修改字符集
can data 64bit 復數 查看字符集 str edit root sql 系統版本:Oracle Linux Server release 5.7數據庫版本:Oracle Database 11g Enterprise Edition Release 11.2.0
mysql設置字符集CHARACTER SET
charsets efault result con 編碼 服務 lin spa cli 在 my.cnf 配置文件中設置相關選項,改變為相應的character set。 設置數據庫編碼(sudo vi /etc/mysql/my.cnf): [client]
Oracle資料庫中修改表結構SQL
增加一個列: ALTER TABLE 表名 ADD(列名 資料型別); 例如: ALTER TABLE terminal ADD ( TERMINAL_NUM_1 NUMBER(11,2) DEFAULT 0.00, TERMINAL_NUM_2 NUMBER(11,
Navicat連線oracle 10g出現unsupported server character set ZHS16GBK錯誤
使用Navicat連線oracle 10g 時出現ORA-12737:Instant Client Light:unsupported server character set ZHS16GBK錯誤; 開啟Navicat》工具》選項; 有個oci,把連線指到自己的E:\oracle\p
linux系統中 修改oracle資料庫字符集問題
今天在往linux系統下的oracle資料庫中匯入dmp資料庫的資料的時候,出現一些問題,經過多次調整和嘗試,最終將資料庫調整好,特此記錄。 首先,在匯出本地的資料庫的時候,由於本地的資料庫中有建 dblink連線,在用exp命令匯出資料的時候,命令列提示 大概 是連線失敗
10 ORA系列:ORA-12704 字符集不匹配 character set mismatch
如果希望對常見的Oracle異常ORA報錯解決方案有系統的瞭解,請看《ORACLE系列異常總結ORA》。 關於Union 中 ORA-12704:字符集不匹配 character set mismatch 在使用Union all連線時,若A集合中某列為nvarc
powerdesigner添加mysql的字符集ENGINE和DEFAULT CHARACTER SET
design data bject gen gbk bdb sql nod nes 工具欄-》database-》edit current DBMS 然後,選中:MYSQL50::Script\Objects\Table\Options 在options末尾添加:
mysql 中 character set 與 collation 的理解
鏈接 ive apple bit spec 解釋 區別 大小 類型 使用 mysql 創建數據表的時候, 總免不了要涉及到 character set 和 collation 的概念, 之前不是很了解。 先來看看 character set 和 collation 的是什麽
Oracle 11g修改字符集AL32UTF8為ZHS16GBK
提示 字符集 錯誤 pic param 輸入 super hot ble oracle11g更改字符集AL32UTF8為ZHS16GBK當初安裝oracle的時候選擇的默認安裝,結果字符集不是以前經常用的16GBK,要改字符集,從網上找到了方法並試了一下,果然好用! 具體如
查看和修改Oracle數據庫字符集
oracle字符集1、查詢oracle server端的字符集 SQL> select userenv('language') from dual; USERENV('LANGUAGE') ----------------------------------------
Oracle下服務端字符集修改
oracle characterset 在Oracle下客戶端中設置的字符集應於服務端保持一致,否則會出現亂碼,而Oracle的客戶端無論是在Windows/DOS系統下還是Unix系統下都可以通過環境變量NLS_LANG來加以控制,至於操作也很簡單,在這裏就不做過多的說明,在這裏主要說一下如何
window 10 修改計算機名,Oracle 10 伺服器資料庫不能登入
作業系統window 10 安裝svn 伺服器時,要求計算機名不能是中文 只能是(A-Z)(a-z)和一些特殊字元 所以修改了計算機名,重啟計算機。但是不一會有同事過來問我,oracl 伺服器是不是停了,我還以為是剛重啟沒能啟動了,一看服務是啟動的,但我本地使用PL sql 也不能訪問了.。
轉載:修改 oracle xe 預設中文字符集成為:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
修改 oracle xe 預設中文字符集成為:SIMPLIFIED CHINESE_CHINA.ZHS16GBK 2011-05-24 22:55:31| 分類: oracle xe | 標籤: |舉報 |字號大中小
如何在Ubuntu 18.04/18.10中安裝Oracle Java 11
JDK 11將提供長期支援,還將作為Java平臺的參考實現以及標準版(Java SE)11。Oracle直到2023年9月都會為JDK 11提供一級支援,而補丁和安全警告等擴充套件支援將延續到2026年。新的長期支援版本每三年釋出一次,根據後續的發行計劃,JDK 17將於2021年釋出。 感謝“Linux
mysql8基礎 show character set 檢視支援的字符集
資料,資料,命根就在資料 ! 操作資料庫時,一定要謹慎小心。師萬物 這裡的程式碼看看就好,要有自己的判斷。遇到抉擇,要不恥上下問。 example stu@Ubuntu:~$ mysql -u root -p Enter password: Welc
oracle 修改字符集 修改為ZHS16GBK
有時候因為資料庫的字符集的問題,導致dmp檔案不能正常匯入到其他資料庫。可以用下面的方法將資料庫的字符集修改一下(改成跟你匯出時的字元一樣)。 注:設定環境變數是用來處理PL/SQL字元問題的,不要吳會是已經將資料庫的字符集修改了。 1.cmd 2.輸入set
oracle修改字符集--使用SQL PLUS
1、使用管理員賬號登陸上去,一般密碼是manager。 conn /as sysdba 2、檢視資料庫編碼。 select * from nls_database_parameters where parameter
oracle記憶體中bufferCache修改
1,檢視曲線,找出適合的值 一般情況下,我們選取estd_physical_read_factor為1的值為最佳,或者為sga_max_size/2~sga_max_size*2/3。 select size_for_estimate "Cache Size (MB)",s
在Ubuntu17.10中安裝Oracle JDK1.8
在Ubuntu17.10中安裝Oracle JDK1.8 很多情況下,linux中都需要jdk,jre來支援,才能執行一些程式。那麼如何來安裝jdk,請看下文。 1.使用java -version命令確認系統中是否已經存在jdk。 2.通過終端在/usr/loc