oracle 11g ogg utf8 转 zhs16gbk char 类型 问题 求救 !!!!

chinanjwolf1 2020-12-08 10:44:53
最近 做 ogg , 源端 为 american_america.zhs16gbk , 目标 端 american_america.al32utf8

远端抓取 和 目标端复制 配置 都是 为 : setenv (nls_lang=american_america.zhs16gbk)
源端 oracle用户 nls_lang = american_america.zhs16gbk ,db字符集 zhs16gbk
目标端 oracle用户 nls_lang = american_america.al32utf8 ,db字符集 al32utf8

目标端 字符字段长度 已经 做了 3* 原长度 /2 扩大长度

现在碰到两个问题 :
一个是 很多 char 类型的字段 , 目标端 复制 部分字段 会 报 字段长度 不够的错误 :ora-12889 value too long for column XXX ,
关键是 无论 吧目标端的长度 扩大到多长 都没有用 !!还是 报同样的错误 !!! 最后 想了一个办法 用 colmap xxx=@strtrim(xxx) c处理 就可以通过 , 这是为啥 ???????


第二个问题 , 即使采用了 一 的方法 处理 不报错了 , 但是仍然有 极少的 中文 char 字段 ,会乱码 !! 但是 同一条记录的其余中文 也不乱码 ? 乱码 字段 也不是 所有的记录 都乱码, 只有少量 乱码 。 为 毛啊 ??????

两个问题 可能是同一个 原因 !!!!

求大神解答 !!!!!
...全文
2317 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
离子光刀 2021-05-10
  • 打赏
  • 举报
回复
你好,请问下解决了吗,我现在也有这个问题
  • 打赏
  • 举报
回复
根据metalink建议:Replicate Chinese Characters AMERICAN_AMERICA.ZHS16GBK to target charset AL32UTF8, Oracle to Oracle, 11.1 and before 11.2 (Doc ID 1469735.1) 源端 setenv NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 目标端: setenv NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 另外看你ogg里配置本来也是如上设置,但下面用户环境变量建议都改成如下试试: oracle用户 nls_lang = AMERICAN_AMERICA.ZHS16GBK
chinanjwolf1 2020-12-08
  • 打赏
  • 举报
回复
都试过的,二楼的方法 不行 , 最后 还是看了 oracle 的官方 文档 ,才最后确定了 我上面说的 方法(事实证明是 最接近成功的一个 , 除了 char 的问题 ) , 其他的 中文都没问题 , 就是 处理 char 类型 和 char 的 中文 有 这个问题 ! 三楼的说法 看到有的 帖子说 要另外的用户 设置 环境变量 nls_lang=american_america.al32utf 安装 ogg ,然后再这样配置 ,我没有 用另外的用户 只是在原来的oracle 用户,nls_lang 在 抓取的 配置文件 中 指定 , 结果 也不行 !! 另外 增加了 trimspaces 参数也没有毛用 !!! 发愁 中 .....
  • 打赏
  • 举报
回复
或者 源端抓取 setenv (nls_lang=american_america.al32utf8) 目标端复制 为 setenv (nls_lang=american_america.al32utf8)
  • 打赏
  • 举报
回复
试过这样吗? 源端抓取 setenv (nls_lang=american_america.zhs16gbk) 目标端复制 为 setenv (nls_lang=american_america.al32utf8)
chinanjwolf1 2020-12-08
  • 打赏
  • 举报
回复
关键 的 关键 是: 初始化的 数据 使用 dblink 直接 insert 过来的 , 这个字段 都没有问题 , 等到 ogg 自动 同步时 就会 出问题 , 感觉也不像是 来源的问题 !!!!! 头大了 !!!
chinanjwolf1 2020-12-08
  • 打赏
  • 举报
回复
其实 是只有一个字段 有问题 , 重新 用 新的用户 设置了 nls_lang = AMERICAN_AMERICA.ZHS16GBK 的环境变量 , 复制进程里面 同样 配置 setenv (nls_lang = AMERICAN_AMERICA.ZHS16GBK) , 有问题的那个字段 仍然有问题 , 问题仍然没有解决 !!!! 根据官方的说法 其实 复制进程 里面的 配置 会 覆盖 系统 环境变量的 !! 抱歉 前面没说清楚 其实 是 只有一个字段 有问题 !!!!!!!! 这个字段 涉及到 4张表 ,而这四张表的 这个 字段 都是 同一个 来源 , 现在怀疑是不是来源本来就有问题 !!!
chinanjwolf1 2020-12-08
  • 打赏
  • 举报
回复
现在 离这个配置 就差 目标端的 oracle 用户的 nls_lang了 , 因为这个小机 不只有一个 库, 还有其他 的 库 ,关键 另外一个库 也有一个 ogg 复制 ,是 uf8 到 utf8的 , 所以 oracle 用户的 nls_lang 肯定不能改 , 实在不行 就只能 用另外的 用户 再 重新 起一个 ogg 复制试一下看了 !!

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧