进行数据库迁移时,用pl/sql导出数据,然后在导入数据时出问题,并且dos窗口有乱码显示,pde和dmp都能正常导出,但是无法正常导入 ,,怀疑时导出数据操作有误,因为pl/sql导出也是调用exp.exe ,但是窗口会被自动关闭,无法查看详细的导出日志,所以用手动方式操作
导出 :
- 执行导出后查看日志情况如下
// 数据库地址可能是数据实例名orcl ,也可能是 ip:端口/数据库实例名
exp 用户名/密码@数据库地址 file=d:/data.dmp log=d:/data.log tables=要导出的表名
好像有编码不统一的情况
参考此处修改编码
-
再次导出 ,编码问题的警告已经没有了
导入 :
- 执行后报错,提示表已经存在(忘记截图了),原因是我通过sql语句手动建好了表,只是没有数据 ,所以解决方法是加上一个ignore=y (要根据业务情况而定,不能把一些重要的操作忽略掉了)
// 数据库地址可能是数据实例名orcl ,也可能是 ip:端口/数据库实例名
imp 用户名/密码@数据库地址 file=d:/data.dmp log=d:/data_import.log tables=要导入的表名
。
//忽略一些错误 ,不会因为有错误而停止执行后面的内容
imp 用户名/密码@数据库地址 file=d:/data.dmp log=d:/data_import.log tables=要导入的表名 ignore=y
附加内容
有时导出一个dmp文件,导入时可能会报错表空间没有的问题,是因为dmp文件中的表空间是源数据,可能和你当前的表空间不匹配,此时就要修改dmp文件,修改其中的表空间,修改dmp文件的表空间 ,因为是间接用16进制的方式修改,所以尽可能的减少要修改的内容,以免破坏dmp文件的结构,修改前先备份!!!!