数据库全球化设置与字符集管理
1. 更改字符集
数据库管理员(DBA)常常希望能够更改数据库字符集。通常是因为数据库最初使用默认的 US7ASCII 字符集创建,后续需要存储该字符集之外的字符信息,例如法语名字。在 9i 版本之前,没有官方支持的更改字符集的技术;从 9i 版本开始,有了支持的技术,但不能保证一定成功。DBA 有责任进行全面检查,确保更改不会损坏数据。因为更改字符集不会重新格式化数据文件中的现有数据,只是改变数据的呈现方式。例如,从西欧字符集转换为东欧字符集时,西欧语言中常见的带重音字母可能会被解释为西里尔字符,导致灾难性后果。
1.1 辅助工具
为了辅助决定是否更改字符集,提供了两个工具:
- 数据库字符集扫描器(Database Character Set Scanner) :可登录数据库并遍历数据文件,生成可能存在问题的报告。例如,使用以下命令以 SYSTEM 用户连接数据库并扫描所有数据文件,检查转换为 UTF8 是否会导致问题:
csscan system/systempassword full=y tochar=utf8
典型问题是,原字符集中用一个字节编码的字符在 UTF8 中可能需要两个字节,导致更改后数据无法适应列。扫描器会生成详细报告,列出所有在新字符集下有问题的行。在转换之前,DBA 需采取适当措施解决这些问题。在运行字符集扫描器之前,必须运行 csminst.sql
脚本来准备数据库。
- 语言和字符集文件扫描器(La