之前再做项目的时候下载了一个开源的程序,数据库在移植的时候通过exp/imp导入导出,结果程序在启动时报错,对比过后发现两个数据库表相差了十几个,再排查问题,发现少掉的十几个表全部是空表,查了一下oracle11g的特性,发现当数据条数是0时不分配segment,所以就不能被导出!我勒个擦!坑爹有木有!

但是总不能每个表插入一条数据再导出吧,作为一个程序猿总不能上手工课吧,于是继续查,找到了一个解决办法,特此记录,以儆效尤!

第一种解决办法:

在创建数据库之前,先将数据库segment属性进行修改,SQL语句如下:

alter system set  deferred_segment_creation=false;

含义如下:deferred_segment_creation,含义是段延迟创建,默认是true。如果这个参数设置为true,你新建了一个表T1,并且没有向其中插入数据,那么这个表不会立即分配extent,也就是不占数据空间,只有当你insert数据后才分配空间。这样可以节省少量的空间。设置deferred_segment_creation 参数为FALSE后,无论是空表还是非空表,都分配segment。需要注意的是,该值设置后只对后面新增的表产生作用,对之前建立的空表不起作用,在修改后需要重新启动数据库参数才能生效

第二种解决办法:

先查一下哪些表是空的,然后使用ALLOCATE EXTENT为数据库对象分配Extent,SQL如下:

查询空表:select table_name from user_tables where NUM_ROWS=0;

生成修改语句:select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 ;

执行生成修改语句的SQL后会生成一堆的ALTER的SQL语句,将生成的语句执行后,再进行exp数据导出,就可以导出所有数据了!

oracle空表导出的问题的更多相关文章

  1. Oracle空表导出

    执行: Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 执行该命令后产 ...

  2. oracle 空表导出dmp会报错

    步骤一.查找出来的语句全部复制并执行 select 'analyze table '||table_name||' compute statistics;' from user_tables; 步骤二 ...

  3. ORACLE 空表不能导出问题解决

    exp不导出空表,是11g的新特性,当表无数据时,不分配segment,以节省空间,所以exp导出的时候,不导出这些表. 先登录要导出的用户执行以下语句 先执行 select 'alter table ...

  4. oracle 11g 空表导出

    背景 oracle9用了一段时间,10用了一段时间,11现在算是主流了.11g也是坑人,空表竟然不导出,解决方法到时很多.这里只是记录下,知道有这个事情. 9的特点是还要用客户端管理工具链接服务器 1 ...

  5. Oracle11g空表导出方法

    今天凌晨在客户现场进行一个Oracle11g的数据库迁移,习惯性的用了exp/imp,然后在新的数据库发现,空表根本没有exp出来,然后查资料,发现了如下信息:[ORACLE 11G在用EXPORT导 ...

  6. oracle空表导不出来

    在oracle 11g r2中,使用exp有时候会导不出空的表,原因是这些表没有分配空间,手工分配空间即可导出. ----查询当前用户下的所有空表: select table_name from us ...

  7. Oracle空表的分配segment

      1.查询相关参数deferred_segment_creation select * from v$parameter where name='deferred_segment_creation' ...

  8. 【EXP】Oracle多表导出问题

    有些时候,需要导入某个用户的一些相关表.但是不知道用户的用户名和密码.这样就很尴尬 但是如果手上有dba权限的用户的话,就很方便的能导出了 先要知道多表导出的语句 exp system/123456 ...

  9. oracle 空表无法导出

    1.执行该语句   select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;  ...

随机推荐

  1. iOS去除导航栏和tabbar的横线

    导航[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetri ...

  2. 2016 - 1- 24 大文件下载 关于NSOutStream 的使用补充

    // // ViewController.m // 大文件下载 // // Created by Mac on 16/1/24. // Copyright © 2016年 Mac. All right ...

  3. 新策略构思 dual thrust

    根据dual truest的策略,因为是针对日线级别的.同理我们可以根据60分钟级别开发出一套策略,等有时间写在下面

  4. Android关联源码support-v4,v7,v13源码(转)

    在Android实际开发过程中往往会遇到使用v4,v7或v13兼容包中的一些类如ViewPager,Fragment等,但却无法关联源码. 在网上搜索之后,有很多办法,这里只向大家介绍一种,我用的觉得 ...

  5. Android 学习第10课,Android的布局

    Android的布局 线性布局

  6. leetcde37. Sudoku Solver

    Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by th ...

  7. CCLabel在最大宽度已知的情况下如何获取实际宽高

    当前环境在cocos2.2.6, 在UI摆图中,会遇到一种情况就是 设定了label的最大宽度MAX_WIDTH,但label的内容是动态的,如何在label输入了文字之后获取label的真实宽高? ...

  8. Android-->Genymotion虚拟机(模拟器)的配置

    --> Genymotion 是一套完整的工具,它提供了Android虚拟环境.它简直就是开发者.测试人员.推销者甚至是游戏玩家的福音. 我只能说非常好用,模拟器中顶级,具体好处可以度娘. -- ...

  9. RestTemplate 请求url

    1.get 请求 RestTemplate restTemplate = new RestTemplate(); String url = ""; JSONObject resul ...

  10. Linux集群及LVS简介

    一.什么是集群 通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的 ...