PL/SQL导入/导出dmp文件-Oracle表空间不一致

背景

      今天进行UAT数据还原到SIT时,两个环境Oracle数据库用户和表空间不一致,刚开始没在意,经过一翻反复导入导出发现最终导入的只有表结构,数据始终无法导入。

导入的表结构 .sql文件和表数据 .dmp文件均无问题。

      由于数据库表结构里存在BLOB字段,PLSQL无法导出.sql结果的数据文件,只能通过dmp文件方式导出。经过网上无数PLSQL教程的指导和尝试,发现无法解决此问题。直接敲命令的方式太麻烦没有进行尝试。不得不说还有人转文章更坑,连导出数据的步骤都是错的。下面进入正题。


版本

PL/SQL:  Version 10.0.5.1710 01.706090

DB :Oracle Database 11g Enterprise Edition Release 11.2.0.3.0

执行步骤

a、导出原数据库表结构:PL/SQL –> Tools –> Export User Objects

PL/SQL导入/导出dmp文件-Oracle表空间不一致_第1张图片

    1:这个是所属用户,这个需要修改为默认用户,把原来所属用户去掉

    2:这个选项要去掉


b、导出原数据库表数据:PL/SQL –> Tools –> Export Tables

PL/SQL导入/导出dmp文件-Oracle表空间不一致_第2张图片

   Grants : 授权,如果两边用户不同,这个选项千万不要选,导出的数据重点就在这,只有这个选项会让数据和用户体系有关联。

这样我们需要的表结构和数据都可以导出完成了。由于我们表数据量大,跑一次就得半小时,就这个玩意儿坑了我两个小时。Broken heart


c、导入表结构到新数据库:PL/SQL –> Tools –> Import Tables –> SQL Insert

PL/SQL导入/导出dmp文件-Oracle表空间不一致_第3张图片

这个没什么难度,找对地方、找对文件直接干就能成功了。


d、导入表数据到新数据库:PL/SQL –> Tools –> Import Tables –> Oracle Import

PL/SQL导入/导出dmp文件-Oracle表空间不一致_第4张图片

同样的问题在这个:

Grants: 这个不要选,如果导出的数据里Grants存在,在这导入时不选择是否能成功?由于我这操作麻烦就没有再次尝试了。

Show:这个据说选择了的话,数据就无法导入进去了,没验证,反正也没啥用,就不选了。


总结

小问题也能带来大麻烦,表面看来只是一个选项选择的问题,里面其实涉及含义很多。

1、如果是数据库迁移或者还原,那么Grants这种权限类,表空间类的选项肯定是要选择的。

2、对于不同用户、表数据导入就只关注数据本身,原数据库表的权限之类的属性就会和新表引起冲突导致导入失败。

转载于:https://www.cnblogs.com/laramia/articles/10718147.html

你可能感兴趣的:(数据库)