zoukankan      html  css  js  c++  java
  • Oracle 11G R2在用EXP 导出时,空表不能导出解决办法

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

      解决方法:

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

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

      2、设置deferred_segment_creation 参数

     设置deferred_segment_creation 参数为FALSE来禁用"段推迟创建"(也就是直接创建segment),无论是空表还是非空表,都分配segment。

    查询该权限参数指令,在sqlpus中,执行如下命令:

    show parameter deferred_segment_creation

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    deferred_segment_creation            boolean     TRUE

    分配segment,在sqlpus中,执行如下命令:
    SQL> alter system set deferred_segment_creation=false;
    系统已更改。

     

    注意:该值设置后只对后面新增的表产生作用,对之前建立的空表(已经存在的)不起作用,仍不能导出。

     

       并且要重新启动数据库,让参数生效。

      3、使用ALLOCATE EXTENT,可以导出之前已经存在的空表。

    使用ALLOCATE EXTENT可以为数据库对象的每一张表分配Extent(注意针对每一张表,就是说一张表需要一条SQL代码):

     针对数据表操作的完整语法如下:

    ALTER TABLE [schema.] table_name ALLOCATE EXTENT [({ SIZE integer [K | M] | DATAFILE 'filename' | INSTANCE integer})]

       故,需要构建如下样子简单的SQL命令:

       alter table TableName allocate extent

    注意:

    查询当前用户下的所有空表(一个用户最好对应一个默认表空间)。命令如下:

       SQL>select table_name from user_tables where NUM_ROWS=0; 

       根据上述查询,可以构建针对空表分配空间的命令语句,如下:

       SQL>Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null(注意:很多教程没有这里,这里是有可能位空的)

       上述代码可产生批量的修改表extent的SQL语句(有多少张空表就产生多少条),我们只需要将其生成的所有sql代码全部执行,就可以给每一张已经存在的表来分配segment,就OK了。

    最后:这时再用exp导出就没有问题了。但是:数据库本身的deferred_segment_creation属性还是TRUE,也是就是说如果再创建新表的话,默认还是不分配segment的。所以还是需要更改deferred_segment_creation的参数,以便以后创建的新表自动分配segment。

    总结:

        如果你的数据库还没有创建任何数据表,那么直接修改deferred_segment_creation属性,以后创建的表无论是不是为空都会自动分配segment,就不会出现导不出空表的情况。然而如果你的数据库中已经有很多空表,并且需要导出来,那么光修改deferred_segment_creation属性则没有用的,因为它只对之后创建的表有作用。你需要给已存在的空表分配segment以便可以导出存在的空表,就用到上面讲的allocate extent方法,但此方法只针对已经存在的表的segment属性,所以最好就是:先给已存在的空表分配segment,方便其可以直接导出,然后设定deferred_segment_creation参数以便以后每张表无论是否为空都自动分配segment。

     

  • 相关阅读:
    POJ 1795 DNA Laboratory
    CodeForces 303B Rectangle Puzzle II
    HDU 2197 本源串
    HDU 5965 扫雷
    POJ 3099 Go Go Gorelians
    CodeForces 762D Maximum path
    CodeForces 731C Socks
    HDU 1231 最大连续子序列
    HDU 5650 so easy
    大话接口隐私与安全 转载
  • 原文地址:https://www.cnblogs.com/muyeh/p/6139247.html
Copyright © 2011-2022 走看看