一、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时能够重建的索引。
例外报告包括扫描参数和应用数据例外。
应用数据例外列出所有例外数据(不能被转换),以便这些数据在必要时进行修改。有两种类型的例外:大小超出和损失转换;大小超出指的是数据转换为新的字符集后会比原来的字符宽;损失转换的这些数据需在转换前被修正合适新字符集或将被转换为乱码。