ORACLE : 数据迁移踩过的大坑,clob字段导入sql失败, 导入/导出 .dmp数据泵时标头验证失败,oracle版本不一致

一、背景

数据迁移,并且只需要迁移几张无比巨大的表。

本来是打算直接导出导入sql文件的,但是导入sql时报错:

ORA-01704 字符串文字太长

这是因为导出的sql中,clob字段的值被转换成了varchar,插入的字符串超过4000,太长了。

于是不得不用使用.dmp文件,从原始服务器中导出.dmp文件,导入进新服务器数据库里。

二、操作步骤

(1) 从原始服务器中导出数据表格

可以使用navicat导出数据泵,这里直接在cmd中导出。

!重要:navicat的导入导出需要sysdba角色

如果是navicat,新建连接-高级-角色-SYSDBA

顺便说一下,如果是命令,登录的时候用户名写为: username as sysdba 就可以了。

如果登录出错,可能是该用户没有sysdba权限。

步骤

1.打开cmd,输入exp,登录(这里暂时不需要在登录名后面加as sysdba)

2.填写配置

3.现在就可以看到导出的.dmp文件啦。

(1) 向新服务器导入.dmp文件

1.打开新服务器cmd,输入imp,登录

2.填写配置

这样就导入成功了,navicat可能需要刷新或者重连才能看到数据。

提示:如果导出的时候用的是expdp命令,那么导入也需要使用impdp

踩坑(1):数据库版本不一致

报错:

IMP-00010: 不是有效的导出文件, 标头验证失败
IMP-00000: 未成功终止导入

这是由于数据库版本不一致,可以修改.dmp文件的数据库版本。

1.首先从新服务器里随便导出一张表,生成.dmp文件

2.打开两个.dmp文件,对比版本号

推荐使用软件UltraEdit对.dmp进行编辑。

将这一处版本号相关的内容统一就好了,原始服务器.dmp文件的版本号改成新服务器的,16进制。

(这一段16进制眼睛都要改瞎了)

踩坑(2):导入.dmp文件成功后找不到数据

这里其实是以为我登录的时候,使用了as sysdba,作为sysdba角色登录。

于是用户就变成了sys,导入也导入进sys库里面了。

posted on   northwest  阅读(1847)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示