oracle 字符集扫描工具Character Set Scanner

CSSCAN(Character Set Scanner utility)是Oracle提供的一个用于检查字符集转换过程中可能会出现的数据丢失或者损坏的情况。也可以单独的扫描某些表某些列能否进行字符集转换,并且能够并行扫描以加快扫描速度。

提问:这个字符集扫描器的作用是什么呢?
回答:查找出在做字符集转换后,哪些内容无法转换需要单独处理,也就是确定并报告在数据转换过程中会出现的异常问题。

csscan工具检测完成之后,会报告如下三种类型的异常:
1)lossy conversions(有耗损的转换)
2)exceeded column length(超出的列长度)
3)convertible or exceptional data in the data dictionary(数据字典中可转换或者有异常的数据)

再提问:什么时候使用这个工具?
再回答:如果您像我一样,需求是从WE8ISO8859P1字符集升级到AL32UTF8字符集,那么,第一步就需要使用这个工具给您的宝贝数据库做一个全面的“体检”了。

2.安装csscan
1)在数据库安装完成之后就会自带这个工具。此工具的存放路径如下:
$ which csscan
/u01/app/oracle/product/11.2.0/db_1/bin/csscan

2)这个工具是二进制文件。

3)如果需要重新安装,可以在下面这个链接得到安装介质。
http://www.oracle.com/technology/software/tech/globalization/index.html

3.“实操式”使用csscan现在开始,请大家打起精神。
1)第一步,以sys用户登陆,创建所需的CSMIG用户和数据字典对象。这个步骤是必要条件的,否则工具无法使用。
$ sqlplus / as sysdba
SQL> @?/rdbms/admin/csminst.sql
SQL> exit;

2)“实操”目标:对目前数据库做“不留死角”的检验。
首先,需要以具有SYSDBA权限的用户登录操作;其次就是对这个工具的一些参数要有所了解。
下面的记录是在我的测试环境下演示的效果。
注意,这里为了使用具有SYSDBA权限的用户操作采用了一个小技巧,如果不知道的话,可能会比较郁闷。
Shell下的小技巧是:userid="'"sys/sys as sysdba"'",只有这样使用才能顺利的执行。也可以把它放到参数文件中。
(1)如果使用参数文件,语法如下

$cd /home/oracle
$ vi csscan.par
userid="sys/sys as sysdba" full=y fromchar=we8iso8859p1 tochar=AL32UTF8 log=check.log capture=y array=1000000 process=4
$ csscan parfile=csscan.par

举例:

userid="sys/sys as sysdba" full=y fromchar=ZHS16CGB231280 tochar=AL32UTF8 log=check.log capture=y array=1000000 process=1

(2)如果是在Shell下直接操作,就得用到上面提到的小技巧了。另外这里我为了提高速度,使用了4个并行(process=4)
$ csscan userid="'"sys/sys as sysdba"'" full=y fromchar=WE8ISO8859P1 tochar=AL32UTF8 log=check.log capture=y array=1000000 process=4

下面是我测试的运行结果:

(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.

时间: 2024-10-31 18:09:29

oracle 字符集扫描工具Character Set Scanner的相关文章

openssl 使用-Openssl心血漏洞扫描工具CrowdStrike Heartbleed Scanner的说明

问题描述 Openssl心血漏洞扫描工具CrowdStrike Heartbleed Scanner的说明 Openssl心血漏洞扫描工具CrowdStrike Heartbleed Scanner的说明 解决方案 主要就是检测返回的ssl handshake hello包等,然后构建发送特意设定好的数据

oracle字符集转换工具DMU使用

关于oracle字符集的介绍参考:http://blog.csdn.net/cymm_liu/article/details/7605081 (此博客也包含了一种修改字符集的方法,但是不建议使用) 今天我们为了解决这个问题:http://blog.csdn.net/cymm_liu/article/details/12013243 采用oracle 的字符集转换工具DMU来进行操作.. 1.DMU简介 参考:The Database Migration Assistant for Unicode

理解ORACLE 字符集【转】

一.引言     ORACLE数据库字符集,即Oracle全球化支持(Globalization Support),或即国家语言支持(NLS)其作用是用本国语言和格式来存储.处理和检索数据.利用全球化支持,ORACLE为用户提供自己熟悉的数据 库母语环境,诸如日期格式.数字格式和存储序列等.Oracle可以支持多种语言及字符集,其中oracle8i支持48种语言.76个国家地域.229 种字符集,而oracle9i则支持57种语言.88个国家地域.235种字符集.由于oracle字符集种类多,且

oracle的字符集检查工具CSSCAN(三)

oracle 提供了两个关于字符集检查的工具,一个csscan,一个是lcsscan(Language and Character Set File Scanner) 一 Database Character Set Scanner(csscan) 刚开始使用csscan时会遇到 CSS-00107错误,CSS-00107: Character set migration utility schema not installed 原因可以从提示得到:未安装CSSCAN. 所以先安装csscan

如何查看和修改Oracle字符集

一.什么是Oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系.ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据.它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台. 影响Oracle数据库字符集最重要的参数是NLS_LANG参数. 它的格式如下 NLS_LANG = language_territory.charset 它有三个组成部分(语言.地域和字符集),每个成分控制了NLS

oracle字符集文档

  Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系.ORACLE支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据.它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台. 一. Oracle字符集相关知识 1 参数说明 影响oracle数据库字符集最重要的参数是NLS_LANG参数 Oracle的字符集命名遵循以下命名规则:      <Language><bit size><encoding

深入Oracle字符集的查看与修改详解_oracle

一.什么是Oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系.ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据.它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台. 影响Oracle数据库字符集最重要的参数是NLS_LANG参数.它的格式如下: NLS_LANG = language_territory.charset 它有三个组成部分(语言.地域和字符集),每个成分控制了NLS

Python脚本实现Web漏洞扫描工具_python

这是去年毕设做的一个Web漏洞扫描小工具,主要针对简单的SQL注入漏洞.SQL盲注和XSS漏洞,代码是看过github外国大神(听说是SMAP的编写者之一)的两个小工具源码,根据里面的思路自己写的.以下是使用说明和源代码. 一.使用说明: 1.运行环境: Linux命令行界面+Python2.7 2.程序源码: Vim scanner//建立一个名为scanner的文件 Chmod a+xscanner//修改文件权限为可执行的 3.运行程序: Python scanner//运行文件 若没有携

oracle 字符集查看与修改

一.什么是Oracle字符集        Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系.ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据.它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台.   影响Oracle数据库字符集最重要的参数是NLS_LANG参数. 它的格式如下: NLS_LANG = language_territory.charset 它有三个组成部分(语言.地域和字符集),