zoukankan      html  css  js  c++  java
  • Oracle11g空表导出设置

      

    alter system set deferred_segment_creation=false;
    select 'alter table '||table_name||' allocate extent;' from user_tables where segment_created='NO'

    处理Oracle导出dmp文件无法处理空表,以及少表的情况
    方法1、批量处理空表

    步骤1、先分析表
            生成分析语句
            --select 'analyze table '||table_name||' compute statistics;' from user_tables;

    步骤2、将分析语句拿出来执行
            类似以下语句
            analyze table table_name compute statistics;

    步骤3、处理空表
            生成处理语句
            --select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
    步骤4、执行处理语句
            类似以下语句
            alter table table_name allocate extent;
    步骤5、查询所有空表
            --select table_name from user_tables where NUM_ROWS=0;

    方法2、设置deferred_segment_creation参数

    SQL> 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

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

    考虑到有的库中表较多(例如我接触到的某一个库有7000+张表手动分析每一张表起来较为繁琐,后期将发布一个java脚本用于自动分析表(本文中两种方法为参考其他博主资料)

  • 相关阅读:
    云服务器迁移的那些事之一
    《编译原理》(第二版)第一章的学习笔记(一)
    vs 实用扩展
    SQL多的是,你不知道的事
    Entity Framework 批量插入 提速
    oracle 回收已删除的表
    发现一个奇怪的问题!
    看到易办网的希望...
    asp.net不认为数据库字段的空值为null
    什么是伪url?
  • 原文地址:https://www.cnblogs.com/joyanli/p/13221055.html
Copyright © 2011-2022 走看看