一、不能导出空表的原因

1、Oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出。

2、设置deferred_segment_creation 参数为FALSE后,无论是空表还是非空表,都分配segment。

在sqlplus中,执行如下命令:

SQL>alter system set deferred_segment_creation=false;

查看:
   SQL>show parameter deferred_segment_creation;

该值设置后只对后面新增的表产生作用,对之前建立的空表不起作用。

二、解决办法

可以使用手工为空表分配Extent的方式,来解决导出之前建立的空表的问题

①select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null

使用上面的语句 会拼接处给空表分配Extent的语句

但是,有很多空表 在视图user_tables中的num_rows不等于0(原因:表中以前有数据,删除后oracle没有统计,视图user_tables中的数据没有更新),所以通过上面的方法并不能为所有的空表分配数据段,解决方法如下

②select 'analyze table '||table_name||' compute statistics;' from user_tables

analyze table tablename compute statistics
    等同于 analyze table tablename compute statistics for table for all indexes for all columns
    for table的统计信息存在于视图:user_tables 、all_tables、dba_tables
    for all indexes的统计信息存在于视图: user_indexes 、all_indexes、dba_indexes
    for all columns的统计信息存在于试图:user_tab_columns、all_tab_columns、dba_tab_columns

执行完后,视图user_tables中的num_rows值会更新,此时再执行①,能够给所有的空表分配数据段

然而,在执行 analyze table tablename compute statistics 时,oracle会报  object statictis are locked (这些表的统计被锁了),通过下面的方式解锁

③select 'exec dbms_stats.unlock_table_stats('||'''JXDEMO'''||','''||table_name||''');' from user_tables

(③得到的结果需要在sqlplus上执行,在pl/sql developer 中的sql窗口执行报错)

③执行后得到的结果执行完了之后再去执行②就没有object statictis are locked错误提示了

解决 Oracle exp导出表数据时空表不能导出的问题的更多相关文章

  1. PL/SQL链接Oracle数据库 导出表结构和表数据

    打开pl/sql客户端(导出数据表结构) 在左侧 点击tabales 2 Tools-->Export User Objects,导出sql格式的文件 3 红色1 是你要选择导出的表,红色2 是 ...

  2. Oracle用imp和exp实现数据的导入和导出

    使用方法如下: Imp username/password@connect_string param=value - exp username/password@connect_string para ...

  3. Oracle exp/imp数据导入导出工具基本用法

    一.获取帮助 exp/imp help=y 二.数据导出 1.将数据库完全导出,设置full选项exp system/manager@orcl file=d:\db.dmp full=y 2.导出数据 ...

  4. Oracle批量导出表数据到CSV文件

    需求:把oracle数据库中符合条件的n多表,导出成csv文本文件,并以表名.csv为文件名存放. 实现:通过存储过程中utl_file函数来实现.导出的csv文件放入提前创建好的directory中 ...

  5. Sqoop_具体总结 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出

    一.使用Sqoop将MySQL中的数据导入到HDFS/Hive/HBase watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWFyb25oYWRvb3A=/ ...

  6. oracle exp(expdp)数据迁移(生产环境,进行数据对比校验)

    前言:客户需要迁移XX 库 ZJJJ用户(迁移到其他数据库),由于业务复杂,客户都弄不清楚里面有哪些业务系统,为保持数据一致性,需要停止业务软件,中间件,杀掉oracle进程. 一.迁移数据倒出部分= ...

  7. Oracle exp使用正則表達式导出部分表

    假设数据库中有许多张表,而我们又仅仅想导出须要的那几张能够使用例如以下命令 --仅仅导出test1.test2表 exp myname/mypassword@orcl file = d:\my.dmp ...

  8. 解决Oracle clob字段数据过大问题

    select * from user_lobs where table_name='WX_MAIL';--SYS_LOB0001313121C00015$$ MB FROM user_segments ...

  9. ORACLE中 大量数据插入表 SQL

    declare g_commit_count number; cursor cu1 is select gl_flexfields_pkg.get_description_sql(gcc.chart_ ...

随机推荐

  1. C# ADO.NET (sql语句连接方式)(查询)

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  2. PHP实现队列及队列原理

    看看各语言实现队列的方法:PHP实现队列:第一个元素作为队头,最后一个元素作为队尾 <?php /** * 队列就是这么简单 * * @link http://www.phpddt.com */ ...

  3. macbook 重装win7

    若是第一次已经成功好了,并且把第一次的安装U盘WININSTALL内容保存完好的前提下, win7要重新安装. 先进入Boot Camp移除Windows,备份好你的WIN系统的重要文件. 把第一次的 ...

  4. python-day-20

    重点总结记录 1.Django请求的生命周期 路由系统 -> 试图函数(获取模板+数据=>渲染) -> 字符串返回给用户 2.路由系统 /index/ -> 函数或类.as_v ...

  5. 大毕设-MATLAB-常用知识回顾

    要用到FIR滤波器和抽样器下面研究这两个的Matlab实现: Fir滤波器: matlab上fir滤波器的关键字是fir1 在command窗口输入help fir1出现帮助文档: >> ...

  6. input[file]标签的accept=”image/*”属性响应很慢的解决办法

    转自:http://blog.csdn.net/lx583274568/article/details/52983693 input[file]标签的accept属性可用于指定上传文件的 MIME类型 ...

  7. 尽快写完Math!

    (1)Arranging Coins 解题思路一:这个想法是关于二次方程,得到算术和的公式是sum =(x + 1)* x / 2 所以对于这个问题,如果我们知道和,那么我们可以知道x =(-1 + ...

  8. 图情期刊要求2015(A,B,C类)

    中国图书馆学报+情报学报+大学图书馆学报+图书情报工作+图书情报知识+情报理论与实践+国家图书馆学刊+情报杂志+图书与情报+情报科学+图书馆杂志+图书馆建设+情报资料工作+图书馆论坛+现代图书情报技术 ...

  9. jQuery HTML 操作

    jQuery 包含很多供改变和操作 HTML 的强大函数. 改变 HTML 内容 语法 $(selector).html(content) html() 函数改变所匹配的 HTML 元素的内容(inn ...

  10. Web开发必知的八种隔离级别

    ACID性质是数据库理论中的奠基石,它定义了一个理论上可靠数据库所必须具备的四个性质:原子性,一致性,隔离性和持久性.虽然这四个性质都很重要,但是隔离性最为灵活.大部分数据库都提供了一些可供选择的隔离 ...