暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ORA-39373报错问题定位分享

IT那活儿 2020-12-12
3769

亲爱的小伙伴们,大家好。

日常数据库维护过程中我们经常会进行两库间数据迁移工作,本次我将分享一下ORACLE12C通过数据泵从高版本12.2迁移数据到低版本12.1过程中遇到的问题,分析思路及处理方法。

[
1、事件背景
]

某运营商一个业务系统因存储空间不足导致业务无法扩展,为满足后续业务增长需求与相应业务部门开会商讨,将其数据库迁移到另一套新购设备存储上。

介绍问题之前先介绍下数据迁移大致流程:

a)权限及配置检查

在迁移之前需要检查源端数据库用户权限、DBLINK、连接数及字符集等配置。

b)表空间使用情况检查

统计源端数据库表空间使用量,在目标端进行创建,并适当扩大UNDO表空间和TEMP表空间,防止在迁移过程中出现快照过旧和临时空间不能扩展的问题。

c)按用户实施数据对象迁移

使用ORACLE工具EXPDB和IMPDP相结合,来进行数据迁移。

d)数据一致性校验

数据迁移完成后需要重点进行源端与目标端对象数量是否一致。

[
2、踩坑过程
]

万事俱备只欠东风,与应用维护人员约定好时间和地点,准备搞起来。

登录数据库主机大胆地搞起

expdptest_link/Test_link@c5xx1ora1_pdbxxxx

cluster=n dumpfile=pdbxxxx_table_%u.dmp  

schemas=AXXX,BXXX

directory=DP_DIR

logfile=exp_PDBXXX-20201112.logversion='12.1.0.2.0'  compression=all  parallel=6  

备注:在高版本导入低版本数据库,在高版本数据库数据导出时,要加上version参数(目标端数据库版本),来解决兼容性问题。

咦,怎么报错了呢

报错如下“

ORA-39373:cannot export TABLE_DATA:"AXXXX"."JL_RD_ST_AUDITRESULT_634_201909"to version 12.1.0.2.0 due to long identifiers”

问题分析及解决办法:

查询相关Mos资料

12.2DataPump Export (EXPDP) Using a Lower Export Client Fails Due ToORA-39373 (Doc ID 2369249.1)

说明:12.1.0.2.0版本的数据库所支持的对象名长度为30字符,而在12.2.0.1.0及其以后的数据库已经解决了字符长度(最大长度128)限制的问题。

例如:在12.1.0.2.0低版本数据库创建一个长度为30和31的表,长度为31的表创建不成功。

为了解决这一问题,找出源端数据库中所有对象名超过30的对象,共计3千多个长度超过30个字节的对象。

通知业务人员对长度超过限制的对象进行删除或者重命名。重新导出恢复正常,无报错信息。

[
3、总结
]

在12CR2版本导入12CR1版本的过程中,由于高版数据库对象名长度限制是128个字符,而低版本对象名长度限制是30个字符,所以要找出高版本库中所有对象名长度超过30的对象,对他们进行删除或者重命名,否则会出现类似“ORA-39373”报错,希望这次分享能够给大家带来帮助。

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论