一、问题原因: 
    11G中有个新特性,当表无数据时,不分配segment,以节省空间

想要给空表也分配segmant,有以下两个办法:

1、insert一行,再rollback就产生segment了。

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

2、设置deferred_segment_creation 参数

show parameter deferred_segment_creation 

   NAME                                 TYPE        VALUE 

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

   deferred_segment_creation            boolean     TRUE 

   SQL> alter system set deferred_segment_creation=false; 

   系统已更改。 

   SQL> show parameter deferred_segment_creation 

   NAME                                 TYPE        VALUE 

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

   deferred_segment_creation            boolean     FALSE 

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

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

二、解决方法:

1、先查询一下当前用户下的所有空表

select table_name from user_tables where NUM_ROWS=0; 

2、用以下这句查找空表

select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 

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

ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;' 

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

      alter table AQ$_AQ$_MEM_MC_H allocate extent; 

      alter table AQ$_AQ$_MEM_MC_G allocate extent; 

      alter table AQ$_AQ$_MEM_MC_I allocate extent; 

      alter table AQ$_AQ_PROP_TABLE_T allocate extent; 

      alter table AQ$_AQ_PROP_TABLE_H allocate extent; 

      alter table AQ$_AQ_PROP_TABLE_G allocate extent; 

      alter table AQ$_AQ_PROP_TABLE_I allocate extent; 

      alter table AQ$_KUPC$DATAPUMP_QUETAB_T allocate extent; 

      alter table AQ$_KUPC$DATAPUMP_QUETAB_H allocate extent; 

      alter table AQ$_KUPC$DATAPUMP_QUETAB_G allocate extent; 

      alter table AQ$_KUPC$DATAPUMP_QUETAB_I allocate extent; 

3、然后再执行

exp 用户名/密码@数据库名 file=/home/oracle/exp.dmp log=/home/oracle/exp_smsrun.log   成功!

当然了也可以用以下方法:expdp和impdp

create directory expdp_dir as '/data/db';
grant read,write on directory expdp_dir to DRGN_OWNER; expdp DRGN_OWNER/DRGN_OWNER DIRECTORY=expdp_dir DUMPFILE=dbfile.dmp SCHEMAS=DRGN_OWNER logfile=DRGN_OWNERexpdp.log create directory impdp_dir as '/data/db';
grant read,write on directory impdp_dir to DRGN_OWNER; impdp DRGN_OWNER/DRGN_OWNER DIRECTORY=impdp_dir DUMPFILE=dbfile.dmp logfile=DRGN_OWNER.dmpimpdp.log

然已经导入了

对于DBA新建数据库,建议建立了空的数据库后,马上执行

alter system set deferred_segment_creation=flase sscope=spfile;
shutdowm immediate
startup

【小结】

1、自己没有好好学习11g的新特性,导致了这个问题花费了2个小时的 
2、建议客户使用稳定的10.2.0.4,客户拒绝,现在11g已经是主流了,并不是每一个客户都很保守使用稳定版本,而非最新版本 
3、某美 和 某ELL 的项目以后少接触,4年前IBM P570双机Oracle10g的实施问题就折腾的无语。 
4、再次论证了很多甲方和厂商基本都是:事前猪一样,事后诸葛亮。和目前国内流行的砖家叫兽有异曲同工之妙。 
5、做技术果然是一条不归之路

处理Oracle 11g在用EXP导出时,空表不能导出的更多相关文章

  1. Oracle 11g 导库导不出空表问题

    Oracle11g 会遇到这样的问题,用exp整库导出的时候,会遇到这样的问题,库里的空表没办法导出 select * from all_all_tables aa where aa.owner='U ...

  2. Oracle 11G在用EXP 导出时,空表不能导出解决

    Oracle 11G在用EXP 导出时,空表不能导出解决 (转)(.http://wanwentao.blog.51cto.com/2406488/545154 11G中有个新特性,当表无数据时,不分 ...

  3. 解决Oracle 11g在用EXP导出时,空表不能导出

    实践结论可行,看"2.解决办法" 一.问题原因:     11G中有个新特性,当表无数据时,不分配segment,以节省空间     1.insert一行,再rollback就产生 ...

  4. 【转】解决Oracle 11g在用EXP导出时,空表不能导出

    一.问题原因: 11G中有个新特性,当表无数据时,不分配segment,以节省空间 .insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segme ...

  5. Oracle 11g 在备份导出时缺少表的问题

    ORACLE 11G中有个新特性,当表无数据时,不分配segment,以节省空间. 解决方法: 1)insert一行,再rollback就产生segment了 该方法是在在空表中插入数据,再删除,则产 ...

  6. oracle 11g 空表也导出

    查询空表 并导出修改空表语句 select 'alter table '||table_name||' allocate extent;' from user_tables where num_row ...

  7. Oracle11g新特性导致空表不能导出问题

        ORACLE 11G在用EXP导出时,发现空表(没有数据或者没有用过的表)不能导出了.     查了一下资料,说是Oracle 11G中有个新特性,当表无数据时,不分配segment,以节省空 ...

  8. Oracle 11G在用EXP 导入、导出时,若有空表对导入导出中遇到的问题的解决

    11G中有个新特性,当表无数据时,不分配segment,以节省空间 解决方法: 1.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segmen ...

  9. Oracle 11G R2在用EXP 导出时,空表不能导出解决办法

    11G中有个新特性,当表无数据时,不分配segment,以节省空间 解决方法: 1.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segmen ...

随机推荐

  1. linux 源码包安装拾遗

    源码包安装和apt-get/yum的区别 安装前的区别:概念上的区别 rpm和dpkg包是经过编译过的包,并且其安装位置由厂商说了算,厂商觉得安装在哪里合适,就会装在哪里,而源码包则是没有经过编译的文 ...

  2. Mysql干货收集

    mysql优化:https://www.cnblogs.com/duanxz/tag/mysql/default.html?page=1

  3. 移动设备safari不支持jquery的live绑定的解决方案

    给元素加上样式如下即可 <style> .btn{ cursor: pointer; } </style>

  4. Django REST Framework 认证 - 权限 - 限制

    一. 认证 (你是谁?) REST framework 提供了一些开箱即用的身份验证方案,并且还允许你实现自定义方案. 自定义Token认证 第一步 : 建表>>>> 定义一个 ...

  5. centos7下部署Redis

    1.1. Redis的安装 Redis是c语言开发的. 安装redis需要c语言的编译环境.如果没有gcc需要在线安装.yum install gcc-c++ 安装步骤: 第一步:redis的源码包上 ...

  6. sql server 与 mysql在自定以数据类型的区别

    sql server   中可以使用 create  TYPE postal_code FORM varchar(6) not null; 用于限定邮编的数据位数,他基于varchar数据类型 注意: ...

  7. Spring中基于Java的配置@Configuration和@Bean用法 (转)

    spring中为了减少xml中配置,可以生命一个配置类(例如SpringConfig)来对bean进行配置. 一.首先,需要xml中进行少量的配置来启动Java配置: <?xml version ...

  8. jQuery——map()函数以及它的java实现

    map()函数小简单介绍 map()函数一直都是我觉得比較有用的函数之中的一个,为什么这么说呢? 先来考虑一下.你是否碰到过下面场景:须要遍历一组对象取出每一个对象的某个属性(比方id)而且用分隔符隔 ...

  9. oracle 时间戳TIMESTAMP

    //数据库 UPDATETIMESTAMP TIMESTAMP(6) //dto /** 更新时间戳 **/ private String updatetimestamp; //dao //插入操作 ...

  10. D3D 线列 小样例

    画两条线 #pragma once #pragma comment(lib,"d3d9.lib") #pragma comment(lib,"d3dx9.lib" ...