oracle字符集轉換分析工具

jss001發表於2009-03-04

一、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時能夠重建的索引。
  例外報告包括掃描引數和應用資料例外。
  應用資料例外列出所有例外資料(不能被轉換),以便這些資料在必要時進行修改。有兩種型別的例外:大小超出和損失轉換;大小超出指的是資料轉換為新的字符集後會比原來的字元寬;損失轉換的這些資料需在轉換前被修正合適新字符集或將被轉換為亂碼。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18921899/viewspace-1016709/,如需轉載,請註明出處,否則將追究法律責任。

相關文章