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

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

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

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

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

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

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

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

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

                        oracle11g用PLSQL导出数据,部分表会导出错误的问题_第1张图片

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

                        导出结果可以通过语句导出,在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;

                        oracle11g用PLSQL导出数据,部分表会导出错误的问题_第2张图片

你可能感兴趣的:(应用)