背景
今天进行UAT数据还原到SIT时,两个环境Oracle数据库用户和表空间不一致,刚开始没在乎,通过一翻反复导入导出发现最终导入的只有表结构,数据始终没法导入。sql
导入的表结构 .sql文件和表数据 .dmp文件均无问题。数据库
因为数据库表结构里存在BLOB字段,PLSQL没法导出.sql结果的数据文件,只能经过dmp文件方式导出。通过网上无数PLSQL教程的指导和尝试,发现没法解决此问题。直接敲命令的方式太麻烦没有进行尝试。不得不说还有人转文章更坑,连导出数据的步骤都是错的。下面进入正题。spa
版本
PL/SQL: Version 10.0.5.1710 01.706090blog
DB :Oracle Database 11g Enterprise Edition Release 11.2.0.3.0教程
执行步骤
a、导出原数据库表结构:PL/SQL –> Tools –> Export User Objectsget
1:这个是所属用户,这个须要修改成默认用户,把原来所属用户去掉it
2:这个选项要去掉io
b、导出原数据库表数据:PL/SQL –> Tools –> Export Tables权限
Grants : 受权,若是两边用户不一样,这个选项千万不要选,导出的数据重点就在这,只有这个选项会让数据和用户体系有关联。im
这样咱们须要的表结构和数据均可以导出完成了。因为咱们表数据量大,跑一次就得半小时,就这个玩意儿坑了我两个小时。
c、导入表结构到新数据库:PL/SQL –> Tools –> Import Tables –> SQL Insert
这个没什么难度,找对地方、找对文件直接干就能成功了。
d、导入表数据到新数据库:PL/SQL –> Tools –> Import Tables –> Oracle Import
一样的问题在这个:
Grants: 这个不要选,若是导出的数据里Grants存在,在这导入时不选择是否能成功?因为我这操做麻烦就没有再次尝试了。
Show:这个听说选择了的话,数据就没法导入进去了,没验证,反正也没啥用,就不选了。
总结
小问题也能带来大麻烦,表面看来只是一个选项选择的问题,里面其实涉及含义不少。
一、若是是数据库迁移或者还原,那么Grants这种权限类,表空间类的选项确定是要选择的。
二、对于不一样用户、表数据导入就只关注数据自己,原数据库表的权限之类的属性就会和新表引发冲突致使导入失败。