exp导出数据时丢表

友军发来消息,说使用exp导出某个schema的数据的时候,发现有些表没有导出来。
因为一直没有使用exp的习惯,就使用exp\expdp再次导出一次,分析二者的日志,发现exp的确有些表没有导出。

问题产生的原因:
在11gR2之前,oracle实在表被创建时就分配空间;
从11gR2(11.2.0.1)中引入了一个新特性:deferred segment creation。11gR2之后,参数deferred_segment_creation默认是true,表示表中插入第一条数据才会分配磁盘空间。空表还没有在磁盘上分配空间,不能被exp导出。

deferred segment creation特性的具体内容就不提了,请看官方文档去!

deferred_segment_creation特性的缺点是:
1.由于要在第一次insert或其他加载数据方式时才产生segment段,而段的创建需要在表空间上分配空间allocate space,若短期内大量空表存在插入的需求,则可能在短期内出现空间分配争用
2.deferred_segment_creation引入了少量的bug.

针对deferred_segment_creation特性的建议:
1.对于存在较多空表或空分区且存在空间压力的,对性能、响应时间没有太高要求的系统可以考虑使用该特性
2.对性能、响应时间有较高要求的库建议关闭该特性,deferred_segment_creation=false

问题解决方法:
1.最简单的解决方案是使用expdp代替exp。

2.找出这些表,并进行修改,然后再尝试exp导出
select ‘alter table ‘||table_name||‘ allocate extent;‘ from user_tables where segment_created = ‘NO‘;

可以查看一下表定义,就会发现这些表和已经有数据的表的定义是有区别的。重点是关注ddl语句中storage()部分
select dbms_metadata.get_ddl(‘TABLE‘,‘<TABLE_NAME>‘,‘<SCHEMA-NAME>‘) from dual;

原文地址:https://www.cnblogs.com/abclife/p/10006815.html

时间: 2024-10-09 13:27:21

exp导出数据时丢表的相关文章

关于oracle 11g导出数据时 报 ORA 1455错误的处理

由于导出的该用户的表可能存在空数据表,那么可能就会出现此其异常. 首先: 查看: SQL>show parameter deferred_segment_creation; 如果为TRUE,则将该参数改为FALSE: 在sqlplus中,执行如下命令: SQL>alter system set deferred_segment_creation=false; 然后: 可以针对数据表.索引.物化视图等手工分配Extent SQL>Select 'alter table '||table_n

asp.net使用MVC4框架基于NPOI做导出数据到Excel表

NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作.使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本

导出数据时想让鼠标变成漏斗形状

 导出数据时想让鼠标变成漏斗形状[传说]广州-G 2015/8/21 9:40:03 startLengthyOperation()....endLengthyOperation()[传说]广州-G 2015/8/21 9:40:27 导数据时前后加上着两个方法[吐槽]广州-麦 2015/8/21 9:40:35 infolog.startLengthyOperation();infolog.endLengthyOperation();

yii2 数据导出 excel导出以及导出数据时列超过26列时解决办法

作者:白狼 出处:http://www.manks.top/article/yii2_excel_extension? 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 先概括下我们接下来要说的大致内容: 数据列表页面导出excel数据, 1.可以根据GridView的filter进行搜索数据并导出 2.可以自行扩展数据导出的时间直接导出数据 //先来看controller层,接收GridView参数并做拼接处理 php c

mysqldump导出数据时,某些表不导出,排除某些表,不导出某些表

需求说明: 今天一同事问,在通过mysqldump导出数据库的时候,能不能把某些表不导出,或者叫做排除在外呢, 记得应该是可以实现,就搜索了下,通过mysqldump的--ignore-table参数能够实现,再次记录下. 操作过程: 1.查看某个库及其中的表的情况 mysql> use mytest Reading table information for completion of table and column names You can turn off this feature t

oracle11g exp导出问题:部分表导不出来

在oracle导出表的命令exp时候发现一个问题,就是部分表完全的导不出来,经检查发现只要是表为空的都会导不出来. 在如下表中发现segment_created都为NO的是导不出来的,经查询后,将语句提取出来执行即可. select 'alter table '|| table_name ||' allocate extent;' from user_tables where segment_created='NO'; alter table table allocate extent; 备注:

利用数据库管理工具(Navicat)导出数据到Excel表中

如果只是想把数据库表中数据简单导出来,可以利用数据库管理工具中的工具 1.先查询 2.在查询出结果中全选 3.导出向导 4.选择Excel 5.选择导出地址并命名 原文地址:https://www.cnblogs.com/sanhao/p/9789232.html

MySQL导出数据时提示文件损坏

使用Navicat工具,优先将整个数据库的表和数据导出. 如果遇到文件损坏错误可以在表实例界面选中所有表,然后将表转储为SQL文件(结构和数据). 在目标数据库执行导出的SQL文件,导入数据和结构. 如果个别表因为各种原因(比如使用federated引擎建立了DB-LINK)引起导入失败,可以重新导出,只是导出过程排除那些出问题的表,对于出问题的表可以单独复制结构和数据. 原文地址:https://www.cnblogs.com/JaxYoun/p/12336959.html

触发器-当表1插入数据时将表1的数据插入表2

--触发器学习 ALTER trigger 触发器名 on 表1 for insert as begin if (select count(1) from 表1)=0 print '未插入数据' else insert into 表2(字段 )select 对应字段 from inserted end --存储过程学习 (1)分页 ALTER procedure 存储过程名( @pageIndex int, @pageSize int ) as declare @startRow int, @e