ITPub博客

首页 > 数据库 > Oracle > oracle 11g exp 无法导出空表-终极解决方案

oracle 11g exp 无法导出空表-终极解决方案

Oracle 作者:路过麻雀 时间:2013-12-26 09:12:47 0 删除 编辑
最近因为工作需要在数据库转移过程中,发现oracle 11g r2中有个新特性:

当表无数据时,不分配segment,以节省空间,可是在用EXPORT导出时,空表也不能导出,这就导致迁移时候丢失了一些表.

导出语法:

exp 'sys/@testdev as sysdba'  FILE=d:owner.DMP OWNER=(HR,SYSTEM,SCOTT) INDEXES=n STATISTICS=none log=d:ownerexp.log

导入语法:
imp 'sys@home as sysdba'  FILE=d:owner.DMP fromuser=HR touser=HR  log=d:hrimp.log

注:在导入之前需要创建好OWNER,ROLE,USER等。

查看LOG日志,会发现导入的表中没有空表的结构,因此采用如下解决方案,成功处理掉此问题。

在源数据库查找空表并强制分配空间

select 'alter table '||owner||'.'||table_name||' allocate extent;'  from dba_tables t where T.SEGMENT_CREATED='NO' AND t.OWNER in ('HR','SYSTEM','SCOTT') order by t.OWNER;

把SQL查询的结果导出,然后执行导出的语句,强行为表分配空间修改segment值,然后再导出即可导出空表了。



<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/60384/viewspace-1114909/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2011-02-10