背景:
最近在搞数据迁移,从a库的u1用户迁移到b库的u2用户,用了开源的kettle配合数据泵,测试时都没什么问题,但是真正上线了,居然当天凌晨卡死在那边。第二天定位时发现是impdp一直卡在那,但也没看到日志中报什么错。后来用小数量做了个测试,,终于看到错误了。错误内容大致如下:
ora-39125: 在kupw$worker.put_ddls 中 worker 发生意外的致命错误 (在调用 dbms_metadata.convert [] 时)
ora-06502: pl/sql: 数字或值错误
lpx-00225: end-element tag hist_gram_list_item does not match start-element tag epvalue
ora-06512: 在 sys.dbms_sys_error, line 95
ora-06512: 在 sys.kupw$worker, line 6228
作业 nm01.sys_import_schema_01 因致命错误于 09:48:10 停止
有错误就好办了,从网上找到相关解释:
发现这个问题是oracle的一个bug,bug号为5071931。
可以有两种方式解决这个问题:
1. 给impdp增加一个参数,exclude=statistics,这个方法要求你在导入之后,再手工导入statistics
2. deploy patch 5071931或者将oracle升级到10.2.0.4
解决:
1、我确实查询了一下我的数据库版本是
sql> select version from v$instance;
version
-----------------
10.2.0.1.0
2、我没有采用打补丁的方法,而是采用第一种方法,在每个parfile文件中加入了如下命令:
exclude=statistics
至此问题解决
后记:
需要注意parfile文件中加入了exclude=statistics有时在导入时也会报:
ora-39002: invalid operation
ora-39168: object path statistics was not found.
解决方法:
exclude=statistics:in('')
至于为什么这样改我也没搞清楚,还望高手指点
本文永久更新链接地址:
