zoukankan      html  css  js  c++  java
  • ORACLE 11G EXP导出空表方法

    EXP在导出11G的库的时候,与过去10G,9I的版本有很大的差别. 就是没有数据的表是不会分配空间的.

    从Oracle 11.2.0.1版本开始,Oracle又提供了一种新的空间分配方法: Create一个非分区表时,这个Table Segment并没有立刻创建, 而是直到有第一行记录插入的时候才去创建这个Segment,这和我们以前的Segment的创建和空间分配方法是不一样.这样的段也被称为延迟段.

    Deferred segment 的优点:

    (1)降低空间的开销:当一次创建成百上千个表时,因为很多表短时间内根本不会用到,所以可以节约大量的磁盘开销

    (2)加快应用的部署:因为没有分配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。需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用

    当启用deferred segment 之后,如果有空表,在使用exp进行导出时, 会报:EXP-00011: 'Table Name' does not exist。即空表不被导出。

     如果想在创建表时就分配segment,可以使用如下SQL:     createtable b_tab (id number, text varchar2(10)) segment creation immediate;

    空表: user_talbes的rows=0   ,分配的段是user_segments

    select'altertable '||table_name ||'allocate extent size 64K;'
    
      from user_tables
    
     where table_name not in
    
           (select segment_name from user_segments where segment_type ='TABLE')



  • 相关阅读:
    input[type="checkbox"]与label对齐
    JS 中 JSON 对象与字符串之间的相互转换
    ashx 一般处理程序中使用 Session
    “性能监视器”监视系统性能的基本设置
    Android 之 获取地理位置及监听
    Android 之 Fagment 完全解析
    PLT redirection through shared object injection into a running process
    Linux动态链接之GOT与PLT
    站点参考设计
    bash shell for循环1到100
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3357860.html
Copyright © 2011-2022 走看看