ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle 11g 不能导出空表

oracle 11g 不能导出空表

原创 Linux操作系统 作者:arthurtangel 时间:2011-07-13 17:49:08 0 删除 编辑
Oracle11g的数据库迁移,习惯性的用了exp/imp,然后在新的数据库发现,空表根本没有exp出来,然后查资料,发现了如下信息:

ORACLE 11G在用EXPORT导出时,空表不能导出。

11G中有个新特性,当表无数据时,不分配segment,以节省空间

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

  2、设置deferred_segment_creation 参数
  该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。

  需注意的是:该值设置后对以前已经存在的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。如需导出之前的空表,只能用第一种方法】

觉得不是解决方法,然后就用了expdp和impdp
create directory expdp_dir as   '/data/app1/dp';
grant read,write on directory expdp_dir to DRGN_OWNER;

expdp DRGN_OWNER/DRGN_OWNER DIRECTORY=expdp_dir DUMPFILE=DRGN_OWNER.dmp SCHEMAS=DRGN_OWNER logfile=DRGN_OWNERexpdp.log

create directory impdp_dir as '/data/app1/dp';
grant read,write on directory impdp_dir to DRGN_OWNER;

impdp DRGN_OWNER/DRGN_OWNER DIRECTORY=impdp_dir DUMPFILE=DRGN_OWNER.dmp logfile=DRGN_OWNER.dmpimpdp.log

空表果然已经导入了

对于DBA新建数据库,我个人建议,建立了空的数据库后,马上执行
alter system set deferred_segment_creation=flase sscope=spfile;
shutdowm immediate
startup

【总结】
1、了解11g的新特性
2、建议客户使用稳定的10.2.0.4,11g啊,还是用expdp吧。

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

上一篇: VitualBox安装centOS
下一篇: oracle开发规范
请登录后发表评论 登录
全部评论

注册时间:2011-05-01

  • 博文量
    81
  • 访问量
    221309