如何在oracle 11g 中导出空表

   如何在oracle 11g 中导出空表

  由于oracle 11g的 延迟段创建的新特性,导致在没有数据插入时,oracle是不会分配数据段的,进而导致exp 是不能导出11g数据库的空表的。

  当然采用expdp就不存在这个问题了。

  expdp hr/hr schemas=hr dumpfile=expdp.dmp directory=dbtest

  conn hr/hr

  select TABLE_NAME,NUM_ROWS from user_tables;

  TABLE_NAME NUM_ROWS

  ------------------------------ ----------

  LOCATIONS 23

  EMP_1 0

  PART_TIME_EMPLOYEES 0

  TEST3 5

  TEST1 5

  TEST 5

  PC_WELL_TEST 2

  PC_ALARM_SORT_TEST 1

  MVIEW_PC_WELL_TEST 2

  MV_CAPABILITIES_TABLE 14

  T 0

  TEST2

  SYS_EXPORT_SCHEMA_01

  SYS_EXPORT_SCHEMA_02

  HOURLY_EMPLOYEES 0

  COUNTRIES 25

  ADMIN_EXT_EMPLOYEES

  ADMIN_WORK_AREA

  EMPLOYEES 107

  DEPARTMENTS 27

  DIGITS 2

  REGIONS 4

  JOB_HISTORY 10

  JOBS 19

  24 rows selected.

  为什么这里的num_rows为空呢?

  那是因为表刚建立,数据字典中还没有这个表相关的统计信息呢。

  SQL> select 'alter table '||table_name||' allocate extent;' from user_tables where

  num_rows=0

  'ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;'

  -----------------------------------------------------------

  alter table PART_TIME_EMPLOYEES allocate extent;

  alter table EMP_1 allocate extent;

  alter table T allocate extent;

  alter table HOURLY_EMPLOYEES allocate extent;

  所以对于网上一些在oracle11g上先使用手工分配extent 再使用exp来导数据库,在实际上效果不怎么地,反而是多次一举直接使用expdp来导oracle 11g数据库中空表来的方便多了。

  当然对那些要从11g导低版本,还是可以的采用这个办法,但是要注意,要么对所有相关的表进行分析系,然后使用上述那个批量脚本。或者不分析表,直接手工用ue编辑分配extent的命令。

  SQL> select TABLE_NAME,NUM_ROWS from user_tables where NUM_ROWS=0;

  TABLE_NAME NUM_ROWS

  ------------------------------ ----------

  PART_TIME_EMPLOYEES 0

  EMP_1 0

  T 0

  HOURLY_EMPLOYEES 0

  补充信息:

  USER_TABLES describes the relational tables owned by the current user. Its columns (except

  for OWNER) are the same as those in ALL_TABLES. To gather statistics for this view, use the

  DBMS_STATS package.

  收集表的统计信息:

  analyze table xxx compute statistics;

  or

  exec dbma_stats.gather_table_stats('USER', 'TABLE');

时间: 2024-10-19 01:28:44

如何在oracle 11g 中导出空表的相关文章

ORACLE EXP不能导出空表的原因分析及解决方法_oracle

一.不能导出空表的原因 1.Oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出. 2.设置deferred_segment_creation 参数为FALSE后,无论是空表还是非空表,都分配segment. 在sqlplus中,执行如下命令: SQL>alter system set deferred_segment_creation=false; 查看: SQL>show parameter deferred_segment_creat

如何解决Oracle 11G R2 用exp无法导出空表的问题

Oracle 11G在用EXPORT导出时,空表不能导11G R2中有个新特性,当表无数据时,不分配segment,以节省空间 解决方法: insert一行,再rollback就产生segment了.该方法是在在空表中插入数据,再删除,则产生segment.导出时则可导出空表. 设置deferred_segment_creation 参数 ,该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment.修改SQL语句: alter system set deferred

Oracle 11G R2 用exp无法导出空表解决方法

Oracle 11G在用EXPORT导出时空表不能导出 11G R2中有个新特性当表无数据时不分配segment以节省空间 解决方法 一. insert一行再rollback就产生segment了. 该方法是在在空表中插入数据再删除则产生segment.导出时则可导出 空表. 二. 设置deferred_segment_creation 参数 该参数值默认是TRUE当改为FALSE时无论是空表还是非空表都分配 segment.修改SQL语句 alter system se

Oracle 11gR2 用exp无法导出空表解决方法

Oracle 11gR2 用exp无法导出空表解决方法        在11gR2中有个新特性,当表无数据时,不分配segment以节省空间,Oracle 当然在执行export导出时,空表则无法导出,但是还是有解决办法的: 解决方法:一.insert一行,再rollback就产生segment了.该方法是在在空表中插入数据,再删除,则产生segment.导出时则可导出空表. 二.设置deferred_segment_creation参数  该参数值默认是TRUE,当改为FALSE时,无无是空表

Oracle11G R2 用exp无法导出空表解决方法

Oracle11G R2 用exp无法导出空表解决方法 作者:吴伟龙  Name:Prudence Woo QQ:286507175 msn:happy-wuweilong@hotmail.com         在11G R2中有个新特性,当表无数据时,不分配segment,以节省空间Oracle当然在执行export导出时,空表则无法导出,但是还是有解决办法的: 解决方法:   一.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生seg

盘点 Oracle 11g 中新特性带来的10大性能影响

盘点 Oracle 11g 中新特性带来的10大性能影响 原创 2017-08-02 盖国强 数据和云 Oracle的任何一个新版本,总是会带来大量引人瞩目的新特性,但是往往在这些新特性引入之初,首先引起的是一些麻烦,因为对于新技术的不了解.因为对于旧环境的不适应,从Oracle产品到技术服务运维,总是要走过一个磨合的长期过程. 请注意:我们并不推荐大家盲目的关闭和摒弃Oracle的新特性,我们建议大家在遇到问题时,做出适合自己的调整. 就此盘点一下 Oracle 11g 中,那些新特性带来的新

Oracle 11g中recyclebin参数的微小变化

SQL> show parameter recyclebin NAME      TYPE  VALUE ------------------------------------ ----------- ------------------------------ recyclebin      string  on SQL> alter system set recyclebin=off; alter system set recyclebin=off                    

[20170315]11.2.0.4 exp可以导出空表.txt

[20170315]11.2.0.4 exp可以导出空表.txt --链接http://www.itpub.net/thread-2084282-1-1.html,11.2.0.4可以使用exp导出空表,没有问题,测试看看.   SCOTT@book> @ &r/ver BANNER -------------------------------------------------------------------------------- Oracle Database 11g Ente

关于从oracle 数据库中导出数据到csv格式文件中

问题描述 关于从oracle 数据库中导出数据到csv格式文件中 最近有个任务是从oracle中导出数据到csv 中的,因为数据库中的数据比较多,大概30万条,请问下,有哪个大神做个这种的,能不能导入这么大的数据 解决方案 将数据从DataGridView中导出成CSV格式文件oracle数据库的表数据导出为csv文件oracle数据库怎么导入csv格式文件呢 解决方案二: 不可以,分批导就行了 解决方案三: 可以使用常用的连接数据库的工具进行导入和导出,导出的时候导出行号,导入的时候建个表,行