zoukankan      html  css  js  c++  java
  • Oracle 11G无法导出空表的解决办法

    11G中有个新特性,当表无数据时,不分配segment,以节省空间
    解决方法:
    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。
    需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。如需导出之前的空表,只能用第一种方法。
    搞了我好久,最后查到这个方法。
    先查询一下当前用户下的所有空表
    select table_name from user_tables where NUM_ROWS=0;
    用以下这句查找空表
    select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
    把查询结果导出,执行导出的语句
    'ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;'
    -----------------------------------------------------------
    alter table MATERIALS allocate extent;
    alter table MEDIASERVERCONFIG allocate extent;
    alter table MESSAGEHIDE allocate extent;
    alter table NOTANDUMS allocate extent;
    alter table NOTESERVERTIME allocate extent;
    alter table ORGANIZEEXAM_DEGREE allocate extent;
    alter table ORGANIZEEXAM_DEPARTMENT allocate extent;
    alter table ORGANIZEEXAM_POST allocate extent;
    alter table ORGANIZEEXAM_POSTGRADE allocate extent;
    alter table ORGANIZEEXAM_REGION allocate extent;
    alter table PLANS allocate extent;

    'ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;'
    -----------------------------------------------------------
    alter table POSTDATE allocate extent;
    alter table POSTIMG allocate extent;
    alter table POSTTITLE allocate extent;
    alter table POSTTITLECATE allocate extent;
    alter table POSTTITLEGRADE allocate extent;
    alter table POSTTITLESUSERS allocate extent;
    alter table PREPARATION_LIST allocate extent;
    alter table PUBLIC_DEP allocate extent;
    alter table PUBLIC_USERGROUP allocate extent;
    alter table REPLY allocate extent;
    alter table REPORTPARAMETER allocate extent;

    'ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;'
    -----------------------------------------------------------
    alter table RESASSIGN_USERGROUP allocate extent;
    alter table RESULTMAP allocate extent;
    alter table SC_USCP allocate extent;
    alter table STUDYTEST allocate extent;
    alter table SUBCOURSEWARE allocate extent;
    alter table SUBJECTINFO allocate extent;
    alter table SUBJECTINFOCATE allocate extent;
    alter table SYSTEMFAQMANAGES allocate extent;
    alter table TEMPLETOFIMPORTS allocate extent;
    alter table TESTRESULT allocate extent;
    alter table TEST_CONN allocate extent;
    将上面的执行结果(所有的alter语句)在要导出的数据库中执行一下,然后在执行导出语句,这样的话空表就会导出了;
    exp username/passwd@SID file=/opt/exp.dmp log=/opt/exp.log
    导出成功!
    导入方法,加buffer(缓冲)以加速导入进度:
    imp username/passwd@SID file=/opt/exp.dmp log=/opt/exp.log buffer=2048000 full=y

    参考文章:

    http://wanwentao.blog.51cto.com/2406488/545154/

  • 相关阅读:
    UVA 10617 Again Palindrome
    UVA 10154 Weights and Measures
    UVA 10201 Adventures in Moving Part IV
    UVA 10313 Pay the Price
    UVA 10271 Chopsticks
    Restore DB後設置指引 for maximo
    每行SQL語句加go換行
    种服务器角色所拥有的权限
    Framework X support IPV6?
    模擬DeadLock
  • 原文地址:https://www.cnblogs.com/fansik/p/6408500.html
Copyright © 2011-2022 走看看