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 2023-01-05 17:55 northwest 阅读(1847) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)