oracle11g用PLSQL导出数据,部分表会导出错误的问题

    之前从plsql导表dmp格式给同事用,结果他也用plsql导入没问题,但是项目运行一直报错。

后来发现是一些表没有被建立。

    再一检查,发现是我导出的dmp时,有一些表直接就会报“表不存在,导出错误”,而这些表都是空表。

    上网查了之后,发现原因是:11g默认创建一个表时不分配segment,只有在插入数据时才会产生(当然也可以强制分配),以节省磁盘空间。后面解决方法转载:

    第一种:在空表中插入一条数据然后再对插入的数据进行删除,便可以进行数据导出(如果表少的话可以手动执行,对于多个表的情况可以采用语句进行批量操作的)。

    第二种:可以使用手工为空表分配Extent的方式,来解决导出之前建立的空表的问题。

    查找空表语句:select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;

    注意:我在查询过程中可能查找的空表有遗漏,这个可以先进行一遍导出

                        image

                        把查询结果导出,执行导出的语句即可。

                        导出结果可以通过语句导出,在PLSQL命令窗口执行下面语句:                       

                        set heading off; 
                        set echo off; 
                        set feedback off; 
                        set termout on; 
                        spool C:\allocate.sql; 
                        Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0; 
                        spool off;

                        导出后执行导出语句 
                        @ C:\allocate.sql;

                        image

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值