背景:
EBS数据库从9i升级到10.2.0.4.4,为了规避一些已知的问题,升级最后一步是从10.2.0.4镜像库通过expdp导入10.2.0.4.4数据库

故障描述:
升级后目标库(10.2.0.4.4)web界面显示乱码,
初步看像是中间多了很多空格
例如:s e l e c t * f r o m v $ p r o c e s s w h e r e a d d r
而10.2.0.4导出库是正常的
例如:select * from v$process where addr

故障处理:

1.怀疑是数据库的字符集不一致导致,检查结果导出库和生产库一致
2.怀疑是导入导出的环境变量不一致导致,检查结果环境变量一致
3.怀疑导出库nls_database_parameters多了NLS_SAVED_NCHAR_CS参数,而生产库没有,导出库从9i升级上来,保留了9i的参数,NLS_SAVED_NCHAR_CS影响不大
4.怀疑是全角和半角输入的问题,全角2个字符,半角一个字符,很像是这种情况,让应用人员从客户端模拟输入一条记录,结果显示正常
5.发现乱码对应的数据类型为long,查找其他的long字段,发现还有类似的情况,大概有10张表,所以基本排除前端输入时全角的问题
6.全角和半角可以用to_single_byte和to_multi_byte转换
SQL> select to_multi_byte('select') from dual;

TO_MULTI_BYTE('SELECT')
----------------------------------------------------------------
select
仔细观察,发现select和s e l e c t字体不一样,所以不是全角的问题,而是中间多了空格,所以彻底排除是全角的问题

7.long类型不是所有的字段都有空格,有的没有,怎么解释都解释不通
8.怀疑10.2.0.4和10.2.0.4.4版本不一样导致,从导出库10.2.0.4重新导出,然后分别导入导出库和生产库,结果都有空格,所以只要用datapump导入导出就会有问题
9.最后只能怀疑是BUG,问题确定后在MOS上搜索datapump long关键字,终于找到了是BUG,只在10.2.0.4上有,真倒霉
Bug 5598333 - EXPDP/IMPDP corrupts the data for a LONG column [ID 5598333.8]

原来是BUG,所以只有部分数据corrupt了,没有任何的规律,但可以重现

10.处理出错的数据

1)数据已经发生了变化,不能重新expdp/impdp
2)long字段只能用游标的方式从导入库update到生产库,批量update会报错
3)其中有一张表long超过4000字符,报buffer太小,被truncate了
4)尝试用物化视图把导入库转成CLOB,复制到生产库,然后从物化视图的CLOB update到long时也不行!需要把字段类型转成CLOB才行,从本地的CLOB update到CLOB是可以的
5)long用物化视图也不能从导入库复制到生产库
6)BUG有补丁,准备打补丁后重新导入导出这一张表

11.后来另外一个同事灵机一动,既然是datapump的bug,何不用imp/exp试试,呵呵,竟然可以,不用停机打补丁了。

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/90901/viewspace-1056628/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/90901/viewspace-1056628/

一个头疼了一天的问题相关推荐

  1. 说一个头疼的问题:后端瞎返回数据导致APP崩溃,你会怎么办?

    这个问题我相信很多人都会遇到,那就是本来好好的代码,莫名其妙就崩溃了,一番查询发现,后端返回的json格式变了,心里顿时一万只草泥马在奔腾,然后怒气冲冲找到后端,去质问.这个时候博弈就开始了,遇到好说 ...

  2. 我是如何用JSP在网络上架构一个网上招标系统,以推进网站无纸化,过程电子化,管理智能化的发展

    声明:部分代码参考与网络,如有侵权请联系博主删除,博主本着学习的态度和大家一起成长. 项目github地址:https://github.com/sunmenglei/sunmengleiwangsh ...

  3. sql统计系统时间那一个月数量_关于BE00007图书借阅管理系统bug修复总结

    引言:昨日我重新审视了B-E00007-基于Java web的图书借阅管理系统的bug问题,主要是借阅图书和归还图书的bug问题,这两个借阅日期和归还日期不太准确,以及借阅后图书数量未发生变化,所以对 ...

  4. 如何使用redis做一个定时任务?

    前言 前一阵子遇到了一个头疼两天的问题,如何在项目运行中动态自定义一个以小时为单位的定时任务?我后来想到了redis键空间,用来监听过期的key,结合存储的执行间隔,重新存储有效期的key. 正文 查 ...

  5. 微信扫码登录只能填一个授权回调域问题

    背景 公司增加了个微信扫码登录,费劲千辛万苦终于把应用申请下来了,但遇到了一个头疼的事情:微信授权回调域只能写一个,且不支持通配.这下可好了,总不能把每个需要微信登录的二级域名都申请一个应用吧?而且一 ...

  6. 我是一个*** (九)

    朦胧中被军号声惊醒,外面已经是一片脚步声,但是并不嘈杂.老张喊:"小王,起床了." 其实我也醒了,军训的感觉在我脑海里面其实并没有完全褪去.我赶紧穿好衣服,背好电脑.外面汽车马达声 ...

  7. 如何用python给自己的孩子取一个名字?

    一.前言 最近在写自动化脚本的时候,遇到一个头疼的bug,就是每次都需要输入不同中文名字. 二.怎么实现 如何得到一个随机汉字 import randomdef GBK2312():head = ra ...

  8. 建立一个网站需要哪些步骤?如何建立一个自己的网站?

    建立一个网站对很多企业公司来说比较重要,那么建立一个网站需要哪些步骤?如何建立一个自己的网站? 1.建立一个网站需要哪些步骤 建立一个网站对大多数人来说是一个头疼的问题,但是如果你的企业公司急需一个网 ...

  9. Day1 制作一个APP之前你要准备的东西都在这了

    点此进入:[干货] 十天 教你从创意到上线APP 制作一个APP之前你要准备哪些东西呢?这对于我们开发者来说往往是一个头疼的问题,然而对于项目经理.产品经理而言,这个问题则是再简单不过的.因为他们知道 ...

最新文章

  1. Bézier曲线 和 Bézier曲面 ( 贝塞尔曲线 和 贝塞尔曲面 )
  2. 【HIMI转载推荐之三】基于Cocos2dx引擎UI扩展引擎包[cocos2d-x-3c]
  3. javascript object 转换int_关于javascript 中类型转换那些事你知道吗?
  4. chrome中F12工具说明
  5. Dataset之DA:数据增强(Data Augmentation)的简介、方法、案例应用之详细攻略
  6. 简述人工智能的发展历程图_简述墙体彩绘机发展历程
  7. Lua table(表)
  8. 【直观理解】一文搞懂RNN(循环神经网络)基础篇
  9. 计算机英语女人英语怎么说,英语时差:计算机和女人
  10. vue项目使用electron打包成桌面应用
  11. C# WebBrowser 设置代理完全解决方案
  12. cef linux 多线程模式,CEF3开发者系列之进程和线程
  13. 互联网的未来之下:政权 金权 人权 无关平权
  14. 共享hp无线扫描到计算机,共享HP / HP扫描仪的OpenWrt路由器
  15. 监控服务器系统密码忘了怎么办,监控服务器系统配置密码
  16. Windows Server 2012 和 System Center 2012 SP1,Virtual Machine Manager 中启用的软件定义的网络...
  17. ttbf 慢 php,連接數據庫不同方式會影響TTBF快慢
  18. 如何为一个kafka集群选择topics/partitions的数量
  19. 遍历一个文件夹下的所有文件和子文件夹
  20. [Web前端]第一次作业

热门文章

  1. Collections的copy()方法和ArrayList的大小问题
  2. 华为 P50 背后的心酸和悲壮
  3. Linux的正则语法,vim跟三大剑客(awk sed grep)
  4. c语言支持虚函数,C语言多态虚函数.doc
  5. 正则表达式的简单用法+利用正则表达式检验身份证号码格式
  6. ssh改造springboot微服务系统改造升级步骤及注意事项(一)
  7. 油猴脚本-Bilibili剧场模式仿Youtube
  8. 43 迷宫问题(避免走重复路径)
  9. 什么是kickstart?
  10. 蓝桥杯2023年真题 python B组