在字符集移值之前使用CSSCAN工具

王朝html/css/js·作者佚名  2008-05-19
宽屏版  字体: |||超大  

Oracle DBA 可能试过导入一个完整的数据库导出――他们只得到了有关字符集不兼容的警告。这个问题比较杂,因为默认字符集是 ASCII,而国际数据库推荐使用的字符集则是 Unicode 字符集之一,比如说 AL32UTF8。

我们很容易在没有意识到数据库字符集不支持非 ASCII 数据之前已经建立了一个数据库并开始了开发。开发人员可以使用字符集扫描(CSSCAN)工具来避免这个问题,该工具自动安装在 Oracle9i中。如果你正在使用其它的数据库版本,那么你可以从Oracle 技术网下载 CSSCAN。

在运行该工具之前,你需要安装属于 CSMIG 用户的一套表和过程。脚本csminst.sql要么在 Oracle Home之下的rdbms/admin 目录下,要么在可下载的发布版本中。运行这个脚本需要 DNA 账户(在 Oracle9i中以 SYSDBA 身份登录)。

在数据库上以 DBA 账户运行 CSSCAN 工具的方法是在命令行提示符下键入 CSSCAN /。该程序提示参数的方式与 EXP 类似。你可以在命令行以如下方式输入参数:

CSSCAN SYSTEM/MANAGER FULL=y TOCHAR=AL32UTF8 ARRAY=102400 PROCESS=3

键入 CSSCAN HELP=Y可以查看完整的参数列表。(要保证有要移值的字符集的标示符,比如说 AL32UTF8 或者 Oracle8 的 UTF8。)在运行了该工具之后,在当前的目录下可能创建了三个文件:scan.err、scan.out和 scan.txt。这些文件包含扫描的结果。

例如,我在一个 UTF-8 数据库中插入了chr(169)到一个文本列中。这个字符不是一个有效的 UTF-8 序列;而对于 Web 用户来说这是一个普通的字符。在scan.err中显示的 CSSCAN 的输出为:

User

: SCOTT

Table : TMPTABLE

Column: TEXT

Type

: VARCHAR2(2000)

Number of Exceptions

: 1

Max Post Conversion Data Size: 1

ROWID

Exception Type

Size Cell Data(first 30 bytes)

------------------------------------------

----------------------

------------------------------

AAAHboAABAAAMYyAAA

lossy conversion

?

------------------------------------------

----------------------

------------------------------

在纠正了由该工具报告的这些错误之后,你就可以以目标字符集使用数据库移值工具(比如说dbassist)将数据移值到一个新数据库中了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有