原文链接:http://www.cnblogs.com/Mr_JinRui/archive/2012/11/05/2755035.html

早的一次使用oracle 11g导出数据发现有的表丢失了,感觉莫名其妙的,后来终于找到原因了。 找到问题以后,再看看解决方案。

11GR2中有个新特性,当表无数据时,不分配segment,以节省空间,可是在用EXPORT导出时,空表也不能导出,这就导致迁移时候丢失了一些表,存储过程也失效了。本以为EXP能有相应的控制开关,可以切换是否导出空表,看了下帮助,没有太大的改变。有些奇怪,难道11GR2不更新EXP的功能了,还看有的帖子说11GR1作为客户端去卸载11GR2的,都会出现ora-1455d的错误,得换成11GR2的exp才没事了,心中感慨阿,怎么版本间的兼容这么脆弱了!

  解决方法:

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

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

二、 设置deferred_segment_creation参数

该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。修改SQL语句:

alter system set deferred_segment_creation=false scope=both;

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

三、 用以下这句查找空表并分配空间

  select 'alter table '||table_name||'
allocate extent;' from user_tables where SEGMENT_CREATED='NO';

  把SQL查询的结果导出,然后执行导出的语句,强行为表分配空间修改segment值,然后再导出即可导出空表了。

  以下是我写的脚本,将未分配空间的表的sql直接输出到result.txt 文件 (直接执行result.txt中的sql即可为未分配空间的表分配空间)

http://files.cnblogs.com/Mr_JinRui/exp%E5%AF%BC%E5%87%BA%E6%97%B6%E7%A9%BA%E6%95%B0%E6%8D%AE%E8%A1%A8%E4%B8%A2%E5%A4%B1.rar

小龙评论:今天从Oracle11g备份数据,然后恢复到Oracle10g,也遇到了同样的问题,刚开始很奇怪,发现有一些表没有导出来,但是log日志也没有报错,后来发现没有导出来的表都没有数据,网上找到了这个很方便的解决办法,贴出来分享一下。

EXP无法导出空表的表结构解决办法的更多相关文章

  1. Oracle 11gR2 用exp无法导出空表解决方法

    Oracle 11gR2 用exp无法导出空表解决方法 在11gR2中有个新特性,当表无数据时,不分配segment以节省空间.Oracle 当然在运行export导出时,空表则无法导出,可是还是有解 ...

  2. oracle exp 无法导出空表

    oracle exp 无法导出空表   select 'alter table '|| a.table_name ||' allocate extent;' from user_tables a wh ...

  3. php history.back返回后表单数据丢失的解决办法

    js使用history.back返回表单数据丢失的主要原因就是使用了session_start();的原因,该函数会强制当前页面不被缓存.本文章向码农介绍php history.back返回后表单数据 ...

  4. ORA-01653 无法在表空间扩展的解决办法 -- 增加表空间大小或给表空间增加数据文件

    转自原文 ORA-01653 无法在表空间扩展的解决办法 -- 增加表空间大小或给表空间增加数据文件 当前系统的数据量越来越大的,昨天还运行正常的数据库,突然无法使用了.经过定位发现是"OR ...

  5. 【Oracle 数据迁移】环境oracle 11gR2,exp无法导出空表的表结构【转载】

    今天做数据迁移,但是发现有些空表无法exp,后来找到问题所在. [原文]:http://www.cnblogs.com/wenlong/p/3684230.html 11GR2中有个新特性,当表无数据 ...

  6. oracle 11g用exp无法导出空表的解决方案

    racle 11g中有个新特性,当表无数据时,不分配segment,以节省空间,当我们用exp导出空表时,无法导出. 解决方法是两个方面, 一是处理现有的空表,让其能导出: 二是设置参数,让后续的新的 ...

  7. Oracle 11g用exp无法导出空表的处理方法

    Oracle 11G在用EXPORT导出时,空表不能导出. 11G中有个新特性,当表无数据时,不分配segment,以节省空间 解决方法: 1.insert一行,再rollback就产生segment ...

  8. Oracle11G R2用exp无法导出空表解决方法

    在11G R2中有个新特性,当表无数据时,不分配segment,以节省空间Oracle当然在执行export导出时,空表则无法导出,但是还是有解决办法的: 解决方法: 一.insert一行,再roll ...

  9. Oracle备份恢复之Oracle11G R2用exp无法导出空表解决方法

    在11G R2中有个新特性,当表无数据时,不分配segment,以节省空间Oracle当然在执行export导出时,空表则无法导出,但是还是有解决办法的: 解决方法: 一.insert一行,再roll ...

随机推荐

  1. ZOOKEEPER解惑[转]

    今年年初的时候,写了一篇ZooKeeper的入门文章<初识ZooKeeper>,一直到这一周,才有时间将ZooKeeper整个源码通读了一遍.不能说完全理解了ZooKeeper的工作原理与 ...

  2. Python实现归并排序

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/3/18 14:26 # @Author : baoshan # @Site ...

  3. phpmyadmin 各种技巧拿 webshell

    site.com/phpMyAdminsite.com/sql D:\wamp\www 账号还有密码 root 密码第一种CREATE TABLE `mysql`.`darkmoon` (`darkm ...

  4. 收藏mac重装php环境

    参考网址: 全新安装Mac OSX 开发者环境 同时使用homebrew搭建 PHP,Nginx ,MySQL,Redis,Memcache ... ... (LNMP开发环境)

  5. Writing your first Django

    Quick install guide 1.1   Install Python, it works with Python2.6, 2.7, 3.2, 3.3. All these version ...

  6. Python3 串口模块移植并使用。

    想通过 Python去控制串口模块,直接上层就使用一门语言,这样虽然执行效率低一些,但是开发速度加快 通过 buildroot 先移植 Python-serial 模块 x Symbol: BR2_P ...

  7. CAS (7) —— Mac下配置CAS 4.x的JPATicketRegistry(服务端)

    CAS (7) -- Mac下配置CAS 4.x集群及JPATicketRegistry(服务端) tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 cas版本: ...

  8. 理解ThreadPoolExecutor源代码(二)execute函数的巧妙设计和阅读心得

    ThreadPoolExecutor.execute()源代码提供了大量凝视来解释该方法的设计考虑.以下的源代码来自jdk1.6.0_37 public void execute(Runnable c ...

  9. 【IntelliJ IDEA】idea上提交代码到GitHub,已经提交了 但是GitHub上却没有的解决办法

    摘要: 今天提交idea上的代码到GitHub,提交过程已经完成, 在版本控制的Log中可以看到,已经将这一部分都提交更新了    在版本控制的Local Changes中已经看不到提交过的代码了   ...

  10. const_cast的应用

    对于const变量,我们不能修改它的值,这是这个限定符最直接的表现.但是我们就是想违背它的限定希望修改其内容怎么办呢?于是我们可以使用const_cast转换符是用来移除变量的const限定符.con ...