oracle字符集轉換分析工具的使用問題
2024-08-29 13:42:22
供稿:網友
一、the Character Set Scanner Utility的作用
分析字符數據轉換到新的字符集的可行性和可能存在的問題并給出一個評估報告,用戶可依據該報告確定如何進行字符集轉換。
該工具主要測試在轉換到新的字符集時數據的字符編碼會作什么改變;是否能成功轉換到新的字符集;轉換后的數據是否適合當前列的大小。只檢測CHAR, VARCHAR2, LONG, CLOB, NCHAR, NVARCHAR2, and NCLOB數據類型的列,不測試LONG, CLOB, and NCLOB數據類型的大小。
二、工具的預備
在使用前必須執行一個SQL腳本CSMINST.SQL,該腳本位于$Oracle_home/rdbms/admin,只須執行一次,主要用于建立與掃描相關的一些資源。
cd <腳本所在的目錄>
sqlplus system/manager
SQL> start csminst.sql
三、工具的執行
執行掃描的用戶必須具備DBA權限。在命令行下執行CSScan,有三種執行方式:
1、使用參數文件 csscan system/manager PARFILE=filename
2、命令行直接給出參數 csscan system/manager full=y tochar=zhs16gbk array=10240 PRocess=3
3、使用交互模式 csscan system/manager
四、參數說明
要獲得使用幫助在命令行下輸入 csscan help=y
ARRAY:定義用于提取數據的buffer大小,該值決定掃描時每次讀取數據的行數,因此影響掃描時間的長短;假如char和varchar2列的大小之和大于該值,則每次讀取一行數據;假如包含LONG, CLOB, or NCLOB列則每次也只讀取一行。
缺省值:10240;最小值:4096;最大值:無限。
BOUNDARIES:用于在生成應用數據報告時按列大小分組報告的分界值,例如設該值為(10,50,100),則在生成的評估報告中應用數據按char(1..10),char(11..50),char(51..100)分組列出,VARCHAR2, NCHAR, and NVARCHAR2 數據類型一樣。
CAPTURE:確定是否獲取可轉換行的信息到表CSM$ERRORS,主要用于選擇數據eXPort/import到目標字符集。
取值范圍:Y or N ,缺省值:N。
FEEDBACK:定義顯示掃描進度的每個點代表已掃描多少行。
缺省值:無;最小值:100;最大值:100000 。
FROMCHAR:說明數據庫CHAR, VARCHAR2, LONG, CLOB數據類型的實際字符集,缺省使用數據庫的字符集。
FROMNCHAR:說明數據庫NCHAR, NVARCHAR2, NCLOB數據類型的實際國家字符集,缺省使用數據庫的國家字符集。
FULL:是否執行全數據庫掃描,假如是則掃描整個數據庫包括數據字典。
取值范圍:Y or N ,缺省值:N。
HELP:顯示關于所有參數的幫助信息。
取值范圍:Y or N ,缺省值:N。
LASTRPT:指示是否產生基于上一次掃描的統計信息上的掃描報告。
取值范圍:Y or N ,缺省值:N。
LOG:產生報告的文件名,缺省為scan;
有三個文件:掃描匯總報告scan.txt,獨立的例外報告scan.err,掃描日志文件scan.out。
MAXBLOCKS:定義每個表的最大塊的大小,以便大表能分成小塊給某個掃描進程。
缺省值:無;最小值:1000;最大值:無限。
PARFILE:指定參數文件。
PROCESS:定義并發掃描進程數。
缺省值:1;最小值:1;最大值:32。
SUPPRESS:定義每個表的最大例外數,掃描記錄例外信息到表CSM$ERRORS中,該參數限制記錄每個表最大的例外數。
缺省值:無限;最小值:0;最大值:無限。
TABLE:指定掃描特定的表。
TOCHAR:指定需要轉換的目標字符集。
TONCHAR:指定需要轉換的目標國家字符集,假如未指定將不掃描NCHAR, NVARCHAR2, NCLOB數據類型的數據 。
USER:指定要掃描的表的擁有者,假如未指定TABLE參數,則掃描該用戶所有表。
USERID:執行掃描的用戶名和密碼(如不在本地還需要加上連接字符串),未輸密碼,系統將會提示你輸入。
五、掃描結果
掃描將產生兩個結果報告:匯總報告和例外報告,匯總報告文件后綴為.txt,例外報告文件后綴為.err。
匯總報告包括數據庫大小(每個表空間的大小和使用情況)、掃描參數、掃描總結、數據字典轉換總結、應用數據轉換總結、應用數據轉換按列大小總結、每張表可轉換數據分布、每個列可轉換數據分布、重建的索引。
掃描總結依掃描模式可包含兩個內容:數據字典和應用數據;他們又分別有三種情況:所有數據保持不變、所有數據可以轉換、一些數據不可轉換。
數據字典轉換總結和應用數據轉換總結分別對相應數據的可轉換情況按數據類型統計數量,其也分為三種情況:保持不變、可轉換、例外(不可轉換)。
應用數據轉換按列大小總結同上,只是依據BOUNDARIES參數按列大小統計。
每張表可轉換數據分布和每個列可轉換數據分布分別按表和按列統計可轉換數據和例外數據的分布數量。
重建的索引列出在import時能夠重建的索引。
例外報告包括掃描參數和應用數據例外。
應用數據例外列出所有例外數據(不能被轉換),以便這些數據在必要時進行修改。有兩種類型的例外:大小超出和損失轉換;大小超出指的是數據轉換為新的字符集后會比原來的字符寬;損失轉換的這些數據需在轉換前被修正合適新字符集或將被轉換為亂碼。