变更数据库字符集之前csscan检查

因实际业务需要,将部分16GBK字符集的数据库变更成AL32UTF8字符集;

问题背景:

变更字符集一般性方法:从老库中导出,导入新库。 但往往导入时会因为字符串长度过长报错ora-12899 。
报错原因是:如果一个varchar2(8)中存的值是 "中国台湾"这样一个词,一个汉字占用2个长度,在zhs16gbk中 占用8个字符,varchar2(8)能刚好存得下。
但如果在utf-8数据库中,同样是这个词"中国台湾",一个汉字占用3个字符,那么varchar2(8)就存不下了,需要扩展成varchar2(12)。

如果能有一种方法,能预先检查zhs16gbk 字符串长度是否满足utf-8就好了!!


无意间搜索MOS,发现ORACLE已经为我们DBA提供了解决方案了, 在8i,9i,10g和11g中将NLS_CHARACTERSET更改为AL32UTF8 / UTF8(Unicode)(文档ID 260192.1)


一、使用csscan的方法,检查数据 是否符合UTF8的要求
二、检查csscan的结果集,并做出相应的数据字典的调整
三、导出用户数据.dmp
四、导入新库(utf-8)

 

一、Csscan安装(11.2.0.x)Installing Csscan in Oracle RDBMS 11.2.0.x 
The default tablespace is SYSTEM, if you plan to run

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Oracle 数据库字符集的更改是一个复杂的过程,需要谨慎处理以避免数据丢失或损坏。以下是一个大致的步骤流程: 1. 停止数据库,并以管理员身份登录到操作系统上。 2. 备份数据库,在备份完成后,将备份文件复制到一个安全的位置。 3. 检查当前数据库中的字符集,以确定更改为哪种字符集,并创建一个新的字符集。 4. 使用 Oracle 提供的 Database Migration Assistant for Unicode 工具,检查并解决数据库中的字符集问题。 5. 在解决了字符集问题之后,使用 Oracle 提供的 CSSCAN 工具,扫描数据库中的所有数据,以确保没有任何数据丢失或损坏的风险。 6. 创建一个新的字符集数据库,并将数据库参数设置为适合新字符集的值。 7. 使用 Oracle 提供的 Data Pump 工具,将原有的字符集数据库中的数据导出到一个文件中。 8. 使用 Oracle 提供的 Data Pump 工具,将导出的数据文件中的数据导入到新的字符集数据库中。 9. 调整新数据库中的对象,例如表、索引、视图等,以适应新的字符集。 10. 测试新的数据库,确保所有数据都已成功转换,并且应用程序可以正常访问新的数据库。 需要注意的是,这只是一个大致的步骤流程,具体的操作步骤可能会因为不同的环境和需求而有所不同。在进行这个过程之前,建议先仔细阅读 Oracle 文档,并咨询专业的数据库管理员或顾问的意见。同时,在进行字符集更改之前,应该充分备份数据,并进行必要的测试和验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大碗刀削面

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值