当前位置: 首页 > backend >正文

oracle19C(ZHS16GBK - 简体中文字符集) 数据库迁移到 oracle19C(AL32UTF8 - Unicode字符集)数据库方案

背景

系统一直使用的oracle19C(ZHS16GBK - 简体中文字符集) 版本,项目上由于多个产品线共用一个数据库实例,其他产品都是oracle19C(AL32UTF8 - Unicode字符集),如果使用impdp导入 gbk编码的dmp文件,由于gbk一个中文占用两个字节、utf8一个中文占用3个字节,导入过程会有大量会报错数据截断错误。

ZHS16GBK AL32UTF8字符集介绍

ZHS16GBK - 简体中文字符集 介绍

编码结构:

扩展GB2312标准,支持21003个汉字
双字节编码(0x8140-0xFEFE)
兼容ASCII(0x00-0x7F单字节)

字符范围:

简体中文(GB 18030-2000基本集)
常见繁体字
中文标点符号(全角)
部分日文假名和特殊符号

局限性:

不支持越南语、泰语等东南亚文字
部分生僻字可能无法显示

AL32UTF8 - Unicode字符集

核心优势:

完整Unicode支持(最新版本)
可变长度编码(1-4字节/字符)
兼容所有语言字符

编码方式:

ASCII字符:1字节(0x00-0x7F)
欧洲文字:通常2字节(如é: 0xC3A9)
中文/日文/韩文:通常3字节(中: 0xE4B8AD)
特殊符号/罕见字:4字节

数据库迁移方案

从utf8编码存储,一个中文占用3个字节,gbk占用两个字节编码入手,把数据库指定用户下所有的varchar、char字段加长1.5倍,如果加长1.5倍后长度大于4000,则最大取4000,因oracle数据库最大长度只支持4000,如果数据库里的内容已经超过大小导入时只有截断,后面换成clob字段单独处理;

另外我还考虑到一个问题,char是固定长度类型,如故char增加1.5倍长度,会导致存储的内容增加空格补足,很多程序查询数据库char字段没做处理,查询到的数据会带很多空格,所以我是想到批量把该用户下所有char字段先改为varchar字段。

迁移步骤

一、先把数据库指定用户导出,重新创建表空间、用户导入到数据库实例,如果直接在开发数据库操作,出问题比较麻烦

从10.19.40.40 导出门户和体检库
# 表空间 BBPNEW_SPACE
expdp C##BBPNEW/Bsoft123 schemas=C##BBPNEW dumpfile=20250614BBPNEW.dmp # 表空间 CYTJ410_SPACE
expdp C##BBP402CYTJDEV41/Bsoft123 schemas=C##BBP402CYTJDEV41 dumpfile=20250614BBP402CYTJDEV41.dmp
创建C##BBPNEWSTD,C##BBP402CYTJDEV41STD用户,BBPNEW_SPACE_STD,CYTJ410_SPACE_STD表空间

表空间、用户名 加STD为标准的含义

# 创建bbp表空间用户
CREATE TABLESPACE  BBPNEW_SPACE_STD
DATAFILE  '/data/oradata/BBPNEW_SPACE_STD.dbf'SIZE 
http://www.xdnf.cn/news/14321.html

相关文章:

  • 【网络信息安全】题目合集
  • 遥控电风扇
  • Prompt工程在企业场景的实战应用:用Grok 3 API优化客服系统的3个技巧
  • LeetCode 第64题 最小路径和
  • JAVA学习-练习试用Java实现“激活函数 :如ReLU、Sigmoid和Tanh,并比较它们的效果”
  • ProtoBuf相关教程(C++版本)
  • 算法优化——394. 字符串解码
  • 数据赋能(247)——数据服务——有效性原则
  • 2025年生命科学突破奖: GLP-1 激素机制及应用,多发性硬化症(MS)致病机制的新发现
  • ag 用法总结
  • 十字滑台的使用注意事项有哪些?
  • 齐次变换矩阵相乘的复合变换:左乘与右乘的深度解析
  • 软件测试之简单基础的安全测试方法(另外包含软测面试题库)
  • 每日学习一道数模题-2024国赛D题-反潜航空深弹命中概率问题
  • 19个一键脚本liux脚本
  • K8S中使用英伟达GPU
  • java 设计模式_行为型_16访问者模式
  • C++继承和多态
  • 基于ssm的老年人健康管理系统
  • 手机验证码自动化处理:从原理到企业级解决方案
  • 从数据孤岛到智能决策:数据编排如何重构企业数据架构?
  • Magentic-ui项目相关整理
  • java 设计模式_行为型_14策略模式
  • Seata如何与Spring Cloud整合?
  • MATLAB交互式贝塞尔曲线演示
  • Softhub软件下载站实战开发(一):项目总览
  • python中判断与循环使用
  • 怎么理解自动驾驶技术中的agent
  • MVVM框架:让前端开发像搭积木一样简单!
  • spring-security5-oauth2系列:密码授权模式