Oracle10g新特性:Language and Character Set File Scanner(LCSSCAN)
Oracle10gR1引入了一个叫做Language and Character Set Detection (LCSD) 的新特性,可以快速高效的确定一个文件中的字符所适用的字符集。LCSD可以通过Oracle提供的GDK(Globalization Development Kit) java API接口调用。基于该特性,Oracle也提供了一个命令行工具LCSSCAN(Language and Character Set File Scanner)。从Oracle10gR2开始该工具还支持对HTML文件的扫描。
LCSSCAN的语法很简单,基本上一看就会使用:
D:\>lcsscan help
Language and Character Set File Scanner v2.1
(c) Copyright 2003, 2004 Oracle Corporation. All rights reserved.
You can control how LCSSCAN runs by entering the LCSSCAN command
followed by the required parameters. To specify parameters, you use
keywords:Example: LCSSCAN RESULTS=2 END=1000 FORMAT=HTML FILE=index.html
Keyword Description (Default)
——————————————————————–
RESULTS number of language and character set pairs to return (1)
BEGIN beginning byte offset of file (1)
END ending byte offset of file (end of file)
FORMAT file format TEXT, HTML or AUTO detect (TEXT)
FILE name of input file
HELP show help screen (this screen)
FILE就是要扫描的文件,BEGIN和END则指定只扫描文件的部分内容。RESULTS指明要返回几组可用的结果,因为一个文件可能兼容于多种字符集。FORMAT指明文件的类型。
D:\>lcsscan file=test.txt
Language and Character Set File Scanner v2.1
(c) Copyright 2003, 2004 Oracle Corporation. All rights reserved.
test.txt: SIMPLIFIED CHINESE ZHS16CGB231280;
使用CSSCAN执行字符集转换健康检查
CSSCAN(Character Set Scanner utility)是Oracle提供的一个用于检查字符集转换过程中可能会出现的数据丢失或者损坏的情况。也可以单独的扫描某些表某些列能否进行字符集转换,并且能够并行扫描以加快扫描速度。
1.创建相关数据字典
SYS@NING>spool scminst.log
SYS@NING>@$Oracle_home\rdbms\admin\csminst.sql
SYS@NING>spool off
该脚本会创建一个叫csmig的用户。
关于Unicode字符集
最初的unicode编码是固定长度的,16位,也就是2两个字节代表一个字符,这样一共可以表示65536个字符。显然,这样要表示各种语言中所有的字符是远远不够的。Unicode4.0规范考虑到了这种情况,定义了一组附加字符编码,附加字符编码采用2个16位来表示,这样最多可以定义1048576个附加字符,目前unicode4.0只定义了45960个附加字符。
Unicode只是一个编码规范,目前实际实现的unicode编码只要有三种:UTF-8,UCS-2和UTF-16,三种unicode字符集之间可以按照规范进行转换。
