zoukankan      html  css  js  c++  java
  • ORACLE EXP-00011:表不存在的分析和解决方案

    解决方法:
    ~~看下数据库的延迟段创建参数
    SQL> show parameter DEFERRED_SEGMENT_CREATION
    NAME                                 TYPE                 VALUE
    ----------------------------------- -------------------- --------------------
    deferred_segment_creation            boolean              TRUE

    首先先说下 对DEFERRED_SEGMENT_CREATION 的讲述
    在 ORACLE 11g R2 版本时提供deferred segment creation延长段(空间分配法:创建非分区表,表的table segment不会创建,直到insert 数据时自动创建个segment)
    优点:
    创建大量表时,暂时不用的表,节约大量的磁盘开销,减少存储空间:降低空间开销
    没分配segment,create table仅操作数据字典,不涉及空间分配,提高效率:加快应用的部署
    缺点:
    在exp、imp的时候。这些表被当成不存在的表(以下有解决方法)
    注意:该特性不适用sys/sysdba用户 --> ∵DBA用户会自动在创建表的时候直接创建segment,普通/system用户不会
    deferred_segment_creation true :那么表的segments和相关的对象(索引,lobs)都会在insert 之后才创建。目的:减少对磁盘空间的占用和创建时间
        false :禁用此功能,对改后的table生效

    exp 不支持deferred  segment ∴进行导出时, 会报:EXP-00011: 'Table Name' does not exist。(Expdp/impdp对deferred segment是支持的)建议使用数据泵导入导出

    要是数据库报此错误延迟段参数= true的话就可能有空表,没有分配segment
     

    --首先查看未分配segment的表
     select table_name from tabs t where not exists (select segment_name from user_segments s where s.segment_name=t.table_name);

    解决EXP-00011方法:
    1、在创建表时就分配segment
     createtable table1 (id number)) segment creation immediate;
    2、也可以通过改deferred_segment_creation为false:
    SQL> alter system set deferred_segment_creation=false;-->只对改后的表生效
    --调整deferred_segment_creation为默认值(true):
    SQL> alter system reset deferred_segment_creation;
    3、对于已存在的空表,通过手动的分配segment/直接向空表里insert一条数据的方法
    SQL> alter table table_name move;   缺点索引要重建
    SQL> alter table table_name allocate extent; 
    对于多得表查询执行(select 'alter table '||table_name||' allocate extent(size 64k);' from tabs t where not exists (select segment_name from user_segments s where s.segment_name=t.table_name) and rownum=1;)

    --查看segment分配情况
    select segment_name fromuser_segments where segment_name in ('tname1','tname2...');

    Export started on 2013-1-29 19:02:44
    E:oracleproduct10.2.0db_1BINexp.exe parfile=C:DOCUME~1ADMINI~1LOCALS~1Tempplsexp.par

    连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

    即将导出指定的表通过直接路径...
    . . 正在导出表                 BASE_DEMO_MODEL导出了           0 行
    成功终止导出, 没有出现警告。

    Export finished on 2013-1-29 19:02:46

    OK了

  • 相关阅读:
    文件共享服务之FTP
    通过rsycn实现数据同步
    rsync命令的使用
    Linux之ssh服务
    跳板机的工作原理和简单的跳板机实现
    Linux进程管理
    javaweb图片上传 tomcat重新部署 图片消失
    KindEditor 上传文件
    PL/SQL通过修改配置文件的方式实现数据库的连接
    PermGen space
  • 原文地址:https://www.cnblogs.com/Jeely/p/11254099.html
Copyright © 2011-2022 走看看