ORACLE 11g exp导出空表

标签: ORACLE 数据库 exp导出 ORACLE 11G 导出空表
2人阅读 评论(0) 收藏 举报
分类:
ORACLE 11G 中有个新特性,当新建的表无数据时,不分配segment,以节省空间。于是,导出用户下的表时就跳过这种空表了。

解决方法:

网上流传甚广的一个:
先查询一下当前用户下的所有空表
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
把查询结果导出,执行导出的语句。
然后再执行导出命令:
exp 用户名/密码@数据库名 file=/home/oracle/exp.dmp log=/home/oracle/exp_smsrun.log

-----------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
实测以上方法无效。新建的表插入了数据后查询num_rows的值依然是空,所以无法找出空表。

desc user_tables查询user_tables的所有字段,发现SEGMENT_CREATED字段有用,新建的空表该字段值为NO,插入过数据的表(即使truncate了),其值为YES,所以猜想用它来查找空表应该可行:
select 'alter table '||table_name||' allocate extent;' from user_tables where SEGMENT_CREATED='NO';
果然得出结果。执行该alter……语句后,再导出用户下的所有表,发现空表也导出了。


----------附网络参考方法(未测试)-----

insert一行,再rollback就产生segment了。
该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。

--------对于以后新建表:
设置deferred_segment_creation 参数
该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。
需注意的是:该值设置后对以前已经存在的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。如需导出之前的空表,只能用前面的方法。
查看评论

字符检测程序(下)

GBFreq[38][30] = 241; GBFreq[17][28] = 240;GBFreq[44][73] = 239; GBFreq[23][78] = 238;GBFreq[40][77]...
  • skyyoung
  • skyyoung
  • 2001-10-15 09:19:00
  • 2092

轻松解决oracle11g 空表不能exp导出的问题。

oracle11g的新特性,数据条数是0时不分配segment,所以就不能被导出。   解决方法:   1插入一条数据(或者再删除),浪费时间,有时几百张表会累死的。 2创建数据库之前 使...
  • zhuyu19911016520
  • zhuyu19911016520
  • 2014-01-15 16:27:21
  • 2407

Oracle11g,导出时;空表不能导出

Oracle11g,导出时;空表不能导出
  • coke_lucky
  • coke_lucky
  • 2016-10-21 10:41:38
  • 345

轻松解决oracle11g 空表不能exp导出的问题

http://colcool.iteye.com/blog/1180985 oracle11g的新特性,数据条数是0时不分配segment,所以就不能被导出。   解决方法:   1插入一条...
  • gaoshanliushui2009
  • gaoshanliushui2009
  • 2015-01-14 11:16:01
  • 3536

ORACLE EXP导出时空表无法导出解决方法

导出dmp文件时,先执行select ‘alter table ‘||table_name||’ allocate extent;’ from user_tables where num_rows=0...
  • Love_pang
  • Love_pang
  • 2017-01-05 14:46:46
  • 626

Oracle 11G 用exp无法导出空表解决方法以及数据泵的使用

一、 insert一行,再rollback就产生segment了。   该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。 二、 设置deferred_segment_...
  • binbin3142
  • binbin3142
  • 2016-03-30 13:55:25
  • 603

oracle11g导出表时会发现少表,空表导不出解决方案。

 oracle11g导出表时会发现少表,空表导不出解决方案。   一:背景引入        oracle11g用exp命令导出数据库表时,有时会发现只导出了一部分表时而且不会报...
  • u010395242
  • u010395242
  • 2017-12-21 11:55:57
  • 389

ORACLE 11G使用exp或者pl/sql导出空表

oracle在11G这个版本中增添了一个新的参数:deferred_segment_creation,默认值为true,作用是延迟建表,对于新建之后从未插入过数据的表(插入数据后又删除所有数据的表不在...
  • u011924665
  • u011924665
  • 2016-11-23 16:39:20
  • 1101

oracle11g导出数据库时怎么设置把空表也导出

1、Oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出。 2、设置deferred_segment_creation 参数为FALSE后,无论...
  • hr541659660
  • hr541659660
  • 2016-10-13 09:16:24
  • 2868

Oracle exp命令导出空表不成功的解决方法

1.查看当前用户下表中 记录为零的 select TABLE_NAME from user_tables t where t.NUM_ROWS = 0 or t.NUM_ROWS is null...
  • luwei_cool
  • luwei_cool
  • 2016-03-03 18:27:08
  • 387
    个人资料
    等级:
    访问量: 1127
    积分: 48
    排名: 180万+
    文章分类
    文章存档