【csscan】字符集掃描工具csscan“實操式”品味
最近一直在做的國際化專案要求資料庫字符集使用AL32UTF8,因此帶了了一個疑問:目前正在服役的WE8ISO8859P1字符集生產資料庫中的核心資料能否完好無損的遷移到這套新字符集資料庫庫中呢?Oracle同學已經為我們想好怎麼解決這個問題了,方法就是使用Oracle自帶的字符集掃描工具csscan對原庫進行一次全面的字符集轉換科目的“體檢”。
藉此機會記錄一下這個工具的使用過程和注意事項,供你我參考。
1.簡單介紹一下csscan這個工具
csscan工具全程大名:Character Set Scanner(字符集掃描工具)。
提問:這個字符集掃描器的作用是什麼呢?
回答:查詢出在做字符集轉換後,哪些內容無法轉換需要單獨處理,也就是確定並報告在資料轉換過程中會出現的異常問題。
csscan工具檢測完成之後,會報告如下三種型別的異常:
1)lossy conversions
2)exceeded column length
3)convertible or exceptional data in the data dictionary
關於csscan更詳細的介紹請大家自行參考下面這個Metalink文章
MetaLink <124721.1> : 'Migrating an Applications Installation to a New Character Set.' 124721.1>
再提問:什麼時候使用這個工具?
再回答:如果您像我一樣,需求是從WE8ISO8859P1字符集升級到AL32UTF8字符集,那麼,第一步就需要使用這個工具給您的寶貝資料庫做一個全面的“體檢”了。
2.安裝csscan
1)在資料庫安裝完成之後就會自帶這個工具。此工具的存放路徑如下:
ora10g@secDB /home/oracle$ which csscan
/oracle/app/oracle/product/10.2.0/db_1/bin/csscan
2)這個工具是二進位制檔案,如果您像我一樣好奇,可以使用Linux的strings命令檢視一下這個工具,您會發現一些有趣的資訊(自己嘗試吧)。
$ strings csscan
3)如果需要重新安裝,可以在下面這個連結得到安裝介質。
3.“實操式”使用csscan現在開始,請大家打起精神。
1)第一步,以sys使用者登陸,建立所需的CSMIG使用者和資料字典物件。這個步驟是必要條件的,否則工具無法使用。
ora10g@secDB /home/oracle$ sqlplus / as sysdba
SQL> @?/rdbms/admin/csminst.sql
SQL> exit;
2)“實操”目標:對目前資料庫做“不留死角”的檢驗。
首先,需要以具有SYSDBA許可權的使用者登入操作;其次就是對這個工具的一些引數要有所瞭解。
下面的記錄是在我的測試環境下演示的效果。
注意,這裡為了使用具有SYSDBA許可權的使用者操作採用了一個小技巧,如果不知道的話,可能會比較鬱悶。
Shell下的小技巧是:userid="'"sys/sys as sysdba"'",只有這樣使用才能順利的執行。也可以把它放到引數檔案中。
(1)如果使用引數檔案,語法如下
ora10g@secDB /home/oracle$ cat csscan.par
userid="sys/sys as sysdba" full=y fromchar=we8iso8859p1 tochar=AL32UTF8 log=check.log capture=y array=1000000 process=4
ora10g@secDB /home/oracle$ csscan parfile=csscan.par
(2)如果是在Shell下直接操作,就得用到上面提到的小技巧了。另外這裡我為了提高速度,使用了4個並行(process=4)
ora10g@secDB /home/oracle$ csscan userid="'"sys/sys as sysdba"'" full=y fromchar=WE8ISO8859P1 tochar=AL32UTF8 log=check.log capture=y array=1000000 process=4
Character Set Scanner v2.1 : Release 10.2.0.3.0 - Production on Sat Sep 19 18:53:09 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
Enumerating tables to scan...
. process 1 scanning SYS.WRH$_SQLSTAT[AAADeWAADAAAD9JAAA]
. process 4 scanning SYS.WRI$_ADV_PARAMETERS[AAAA54AADAAAAMZAAA]
---- 這裡省略N多的提示資訊 ----
. process 3 scanning SYS.WRH$_TABLESPACE_STAT[AAADV7AADAAAFsxAAA]
. process 2 scanning SYS.STREAMS$_APPLY_SPILL_MSGS_PART[AAAB/wAADAAAAlxAAA]
Creating Database Scan Summary Report...
Creating Individual Exception Report...
Scanner terminated successfully.
(3)看到上面的資訊,就表示執行成功了。完成之後會在當前目錄下生成如下三個檔案
ora10g@secDB /home/oracle$ ls -l check*
-rw-r--r-- 1 oracle oinstall 7.1K Sep 19 18:53 check.log.err
-rw-r--r-- 1 oracle oinstall 61K Sep 19 18:53 check.log.out
-rw-r--r-- 1 oracle oinstall 8.7K Sep 19 18:53 check.log.txt
(4)您可以使用vi編輯器進行檢視
ora10g@secDB /home/oracle$ vi check.log.err check.log.out check.log.txt
(5)就上面的三個檔案一一解釋一下:
check.log.err檔案是Database Scan Individual Exception Report,記錄著我們非常關心的哪些資料會在轉換之後出問題。需要重點關注這個檔案。
check.log.out檔案就是記錄了上面在終端上能看到的所有內容,用來檢查命令是否正常執行完成。
check.log.txt檔案是Database Scan Summary Report,對整個檢驗結果給出一個列表式的Report。
三個檔案的具體內容我就不在這裡展示了,以您自己的檢驗結果為準。
(6)這裡我們將對資料庫做一個全面的分析,如果您只是想對具體的某個表進行分析,可以使用下面的方法
ora10g@secDB /home/oracle$ csscan system/sys table=SEC.DEMO tochar=AL32UTF8 array=4096000 process=4 suppress=100 lcsd=y;
Character Set Scanner v2.1 : Release 10.2.0.3.0 - Production on Sat Sep 19 19:11:23 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
Enumerating table to scan...
. process 1 scanning SEC.DEMO[AAADI/AAHAAAnoRAAA]
Creating Database Scan Summary Report...
Creating Individual Exception Report...
Scanner terminated successfully.
不指定log引數,會預設生成如下三個檔案
ora10g@secDB /home/oracle$ ls -l scan*
-rw-r--r-- 1 oracle oinstall 1.5K Sep 19 19:11 scan.err
-rw-r--r-- 1 oracle oinstall 529 Sep 19 19:11 scan.out
-rw-r--r-- 1 oracle oinstall 6.4K Sep 19 19:11 scan.txt
4.【附】聯機參考
使用“csscan help=y”或“csscan -help”命令可以得到csscan使用方法參考
ora10g@secDB /home/oracle$ csscan help=y
或
ora10g@secDB /home/oracle$ csscan -help
Character Set Scanner v2.1 : Release 10.2.0.3.0 - Production on Sat Sep 19 17:32:12 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
You can let Scanner prompt you for parameters by entering the CSSCAN
command followed by your username/password:
Example: CSSCAN SYSTEM/MANAGER
Or, you can control how Scanner runs by entering the CSSCAN command
followed by various parameters. To specify parameters, you use keywords:
Example: CSSCAN SYSTEM/MANAGER FULL=y TOCHAR=utf8 ARRAY=1024000 PROCESS=3
Keyword Default Prompt Description
---------- ------- ------ -------------------------------------------------
USERID yes username/password
FULL N yes scan entire database
USER yes owner of tables to be scanned
TABLE yes list of tables to scan
COLUMN yes list of columns to scan
EXCLUDE list of tables to exclude from scan
TOCHAR yes new database character set name
FROMCHAR current database character set name
TONCHAR new national character set name
FROMNCHAR current national character set name
ARRAY 1024000 yes size of array fetch buffer
PROCESS 1 yes number of concurrent scan process
MAXBLOCKS split table if block size exceed MAXBLOCKS
CAPTURE N capture convertible data
SUPPRESS maximum number of exceptions logged for each table
FEEDBACK report progress every N rows
BOUNDARIES list of column size boundaries for summary report
LASTRPT N generate report of the last database scan
LOG scan base file name of report files
PARFILE parameter file name
PRESERVE N preserve existing scan results
LCSD N no enable language and character set detection
LCSDDATA LOSSY no define the scope of the detection
HELP N show help screen (this screen)
QUERY N select clause to scan subset of tables or columns
---------- ------- ------ -------------------------------------------------
Scanner terminated successfully.
5.小結
Oracle的問題要用Oracle的方法去解決!
Oracle提供給我們很多類似csscan的實用小工具,每一個工具都是針對特定需求,均是一把好手--存在即合理。
“善用佳軟”,大家慢慢體會吧。
-- The End --
藉此機會記錄一下這個工具的使用過程和注意事項,供你我參考。
1.簡單介紹一下csscan這個工具
csscan工具全程大名:Character Set Scanner(字符集掃描工具)。
提問:這個字符集掃描器的作用是什麼呢?
回答:查詢出在做字符集轉換後,哪些內容無法轉換需要單獨處理,也就是確定並報告在資料轉換過程中會出現的異常問題。
csscan工具檢測完成之後,會報告如下三種型別的異常:
1)lossy conversions
2)exceeded column length
3)convertible or exceptional data in the data dictionary
關於csscan更詳細的介紹請大家自行參考下面這個Metalink文章
MetaLink <124721.1> : 'Migrating an Applications Installation to a New Character Set.' 124721.1>
再提問:什麼時候使用這個工具?
再回答:如果您像我一樣,需求是從WE8ISO8859P1字符集升級到AL32UTF8字符集,那麼,第一步就需要使用這個工具給您的寶貝資料庫做一個全面的“體檢”了。
2.安裝csscan
1)在資料庫安裝完成之後就會自帶這個工具。此工具的存放路徑如下:
ora10g@secDB /home/oracle$ which csscan
/oracle/app/oracle/product/10.2.0/db_1/bin/csscan
2)這個工具是二進位制檔案,如果您像我一樣好奇,可以使用Linux的strings命令檢視一下這個工具,您會發現一些有趣的資訊(自己嘗試吧)。
$ strings csscan
3)如果需要重新安裝,可以在下面這個連結得到安裝介質。
3.“實操式”使用csscan現在開始,請大家打起精神。
1)第一步,以sys使用者登陸,建立所需的CSMIG使用者和資料字典物件。這個步驟是必要條件的,否則工具無法使用。
ora10g@secDB /home/oracle$ sqlplus / as sysdba
SQL> @?/rdbms/admin/csminst.sql
SQL> exit;
2)“實操”目標:對目前資料庫做“不留死角”的檢驗。
首先,需要以具有SYSDBA許可權的使用者登入操作;其次就是對這個工具的一些引數要有所瞭解。
下面的記錄是在我的測試環境下演示的效果。
注意,這裡為了使用具有SYSDBA許可權的使用者操作採用了一個小技巧,如果不知道的話,可能會比較鬱悶。
Shell下的小技巧是:userid="'"sys/sys as sysdba"'",只有這樣使用才能順利的執行。也可以把它放到引數檔案中。
(1)如果使用引數檔案,語法如下
ora10g@secDB /home/oracle$ cat csscan.par
userid="sys/sys as sysdba" full=y fromchar=we8iso8859p1 tochar=AL32UTF8 log=check.log capture=y array=1000000 process=4
ora10g@secDB /home/oracle$ csscan parfile=csscan.par
(2)如果是在Shell下直接操作,就得用到上面提到的小技巧了。另外這裡我為了提高速度,使用了4個並行(process=4)
ora10g@secDB /home/oracle$ csscan userid="'"sys/sys as sysdba"'" full=y fromchar=WE8ISO8859P1 tochar=AL32UTF8 log=check.log capture=y array=1000000 process=4
Character Set Scanner v2.1 : Release 10.2.0.3.0 - Production on Sat Sep 19 18:53:09 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
Enumerating tables to scan...
. process 1 scanning SYS.WRH$_SQLSTAT[AAADeWAADAAAD9JAAA]
. process 4 scanning SYS.WRI$_ADV_PARAMETERS[AAAA54AADAAAAMZAAA]
---- 這裡省略N多的提示資訊 ----
. process 3 scanning SYS.WRH$_TABLESPACE_STAT[AAADV7AADAAAFsxAAA]
. process 2 scanning SYS.STREAMS$_APPLY_SPILL_MSGS_PART[AAAB/wAADAAAAlxAAA]
Creating Database Scan Summary Report...
Creating Individual Exception Report...
Scanner terminated successfully.
(3)看到上面的資訊,就表示執行成功了。完成之後會在當前目錄下生成如下三個檔案
ora10g@secDB /home/oracle$ ls -l check*
-rw-r--r-- 1 oracle oinstall 7.1K Sep 19 18:53 check.log.err
-rw-r--r-- 1 oracle oinstall 61K Sep 19 18:53 check.log.out
-rw-r--r-- 1 oracle oinstall 8.7K Sep 19 18:53 check.log.txt
(4)您可以使用vi編輯器進行檢視
ora10g@secDB /home/oracle$ vi check.log.err check.log.out check.log.txt
(5)就上面的三個檔案一一解釋一下:
check.log.err檔案是Database Scan Individual Exception Report,記錄著我們非常關心的哪些資料會在轉換之後出問題。需要重點關注這個檔案。
check.log.out檔案就是記錄了上面在終端上能看到的所有內容,用來檢查命令是否正常執行完成。
check.log.txt檔案是Database Scan Summary Report,對整個檢驗結果給出一個列表式的Report。
三個檔案的具體內容我就不在這裡展示了,以您自己的檢驗結果為準。
(6)這裡我們將對資料庫做一個全面的分析,如果您只是想對具體的某個表進行分析,可以使用下面的方法
ora10g@secDB /home/oracle$ csscan system/sys table=SEC.DEMO tochar=AL32UTF8 array=4096000 process=4 suppress=100 lcsd=y;
Character Set Scanner v2.1 : Release 10.2.0.3.0 - Production on Sat Sep 19 19:11:23 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
Enumerating table to scan...
. process 1 scanning SEC.DEMO[AAADI/AAHAAAnoRAAA]
Creating Database Scan Summary Report...
Creating Individual Exception Report...
Scanner terminated successfully.
不指定log引數,會預設生成如下三個檔案
ora10g@secDB /home/oracle$ ls -l scan*
-rw-r--r-- 1 oracle oinstall 1.5K Sep 19 19:11 scan.err
-rw-r--r-- 1 oracle oinstall 529 Sep 19 19:11 scan.out
-rw-r--r-- 1 oracle oinstall 6.4K Sep 19 19:11 scan.txt
4.【附】聯機參考
使用“csscan help=y”或“csscan -help”命令可以得到csscan使用方法參考
ora10g@secDB /home/oracle$ csscan help=y
或
ora10g@secDB /home/oracle$ csscan -help
Character Set Scanner v2.1 : Release 10.2.0.3.0 - Production on Sat Sep 19 17:32:12 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
You can let Scanner prompt you for parameters by entering the CSSCAN
command followed by your username/password:
Example: CSSCAN SYSTEM/MANAGER
Or, you can control how Scanner runs by entering the CSSCAN command
followed by various parameters. To specify parameters, you use keywords:
Example: CSSCAN SYSTEM/MANAGER FULL=y TOCHAR=utf8 ARRAY=1024000 PROCESS=3
Keyword Default Prompt Description
---------- ------- ------ -------------------------------------------------
USERID yes username/password
FULL N yes scan entire database
USER yes owner of tables to be scanned
TABLE yes list of tables to scan
COLUMN yes list of columns to scan
EXCLUDE list of tables to exclude from scan
TOCHAR yes new database character set name
FROMCHAR current database character set name
TONCHAR new national character set name
FROMNCHAR current national character set name
ARRAY 1024000 yes size of array fetch buffer
PROCESS 1 yes number of concurrent scan process
MAXBLOCKS split table if block size exceed MAXBLOCKS
CAPTURE N capture convertible data
SUPPRESS maximum number of exceptions logged for each table
FEEDBACK report progress every N rows
BOUNDARIES list of column size boundaries for summary report
LASTRPT N generate report of the last database scan
LOG scan base file name of report files
PARFILE parameter file name
PRESERVE N preserve existing scan results
LCSD N no enable language and character set detection
LCSDDATA LOSSY no define the scope of the detection
HELP N show help screen (this screen)
QUERY N select clause to scan subset of tables or columns
---------- ------- ------ -------------------------------------------------
Scanner terminated successfully.
5.小結
Oracle的問題要用Oracle的方法去解決!
Oracle提供給我們很多類似csscan的實用小工具,每一個工具都是針對特定需求,均是一把好手--存在即合理。
“善用佳軟”,大家慢慢體會吧。
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-615093/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在oracle 10.2.0.4上配置字符集掃描工具Csscan(一)OracleCSS
- 在oracle 10.2.0.4上使用字符集掃描工具Csscan(二)OracleCSS
- CSSCAN掃描字符集轉換耗損CSS
- Oracle工具——csscanOracleCSS
- oracle的字符集檢查工具CSSCAN(一)OracleCSS
- oracle的字符集檢查工具CSSCAN(二)OracleCSS
- oracle的字符集檢查工具CSSCAN(三)OracleCSS
- Oracle CSSCAN工具使用OracleCSS
- CSSCAN使用說明[字符集問題]CSS
- Csscan&LcsscanCSS
- OTools--csscan工具幫助記錄。CSS
- oracle10g_csscan_更變資料庫字符集及國家字符集的工具測試OracleCSS資料庫
- Csscan output explained [ID 444701.1]CSSAI
- NMAP分散式掃描工具dnmap分散式
- 掃描技術和掃描工具
- 安全掃描工具
- 綜合掃描工具
- 掃描王 for Mac專業圖片掃描工具Mac
- Zenmap(埠掃描工具)
- 域名掃描工具Fierce
- oracle資料庫字符集characterset遷移及變更之csscan及csalter.plb系列三Oracle資料庫CSS
- oracle資料庫字符集characterset遷移及變更之csscan及csalter.plb系列四Oracle資料庫CSS
- 藍芽掃描工具btscanner修復暴力掃描模式藍芽模式
- 海量埠掃描工具masscan
- 自制分散式漏洞掃描分散式
- Nessus漏洞掃描教程之使用Nmap工具掃描識別指紋
- Oracle服務掃描工具OscannerOracle
- 主機安全掃描工具-- vuls
- 網站漏洞掃描工具Uniscan網站
- 網路掃描整合工具SPARTA
- 系統漏洞掃描工具Nessus
- nmap掃描檔案提取工具
- WordPress漏洞掃描工具WPScan
- Joomla!網站掃描工具joomscanOOM網站
- WordPress外掛掃描工具plecost
- 京東掃描平臺EOS—JS掃描落地與實踐JS
- 掃描易的api函式API函式
- 5款實用的漏洞掃描工具,記得收藏!