Oracle 11g exp 导出表不全

今天在oracle11g 上用exp命令导出的时候遇到一个奇怪的现象,无数据的表exp总是导不出来,查询了一下发现这是oracle 11g的新特性,当表无数据时,不分配segment,以节省空间。而使用exp命令时,无Segment的表不会被导出。

解决办法:

select ‘alter table ‘||table_name||‘ allocate extent;‘ from user_tables where num_rows=0;

结果形如:

Alter table XXX allocate extent;

查询出所有的结果,在sqlplus里重新执行。

?

?

DEFERRED_SEGMENT_CREATION参数:


Property


Description


Parameter type


Boolean


Default value


true


Modifiable


ALTER SESSION,?ALTER SYSTEM


Range of values


true | false


Basic


No

?

DEFERRED_SEGMENT_CREATION?specifies the semantics of deferred segment creation. If set to?true, then segments for tables and their dependent objects (LOBs, indexes) will not be created until the first row is inserted into the table.

Before creating a set of tables, if it is known that a significant number of them will not be populated, then consider setting this parameter to?true. This saves disk space and minimizes install time.

从Oracle 11g release 2开始,添加了一个DEFERRED_SEGMENT_CREATION参数,默认值为true表示新创建表的时候分配extent,只有在插入数据的时候才开始分配extent。在常规环境,由于创建表的时候并不会立即分配extent,节约空间,减少创建时间,所以能提高效率。

可以使用如下命令禁用此feature:

alter system set deferred_segment_creation=false;

这只会影响以后创建的表,并不能影响之间创建的表。

?

Ref

http://dbaora.com/deferred-segment-creation-on-demand-oracle-database-11g-release-2-11-2/

http://blog.csdn.net/tianlesoftware/article/details/6603608

http://stackoverflow.com/questions/18924704/how-to-export-empty-tables-in-oracle

http://www.cnblogs.com/downmoon/archive/2012/12/03/2799864.html

时间: 2024-10-09 22:22:22

Oracle 11g exp 导出表不全的相关文章

exp导出表不全

使用EXP,IMP把A库中的数据按用户导入B库,也是先在B库建立表空间和对应的用户,导入后无任何报错信息. 为了谨慎起见,把两个库的对象进行对比( select object_type,count(*) from dba_objects where owner='owner_name' group by object_type order by object_type),结果真发现问题,A库中有许多表和相关对象没有导入B库.查询EXP日志,发现这些表根本没有被导出. 上网查了下资料,exp在11

oracle 11g exp默认空表不导出 原因及解决方法

在oracle11g中,每张表在起初创建时,默认是不分配区段给此对象. 当首次插入数据时,会分配对应的区段. 对应控制参数为 deferred_segment_creation=true 如果要保持跟低版本保持一致的属性,可以设定此参数值为flase alter system set deferred_segment_creation=false scope=both; 在后续创建的新表中,会默认分配区段. 如果参数值设定为true,即使在创建表时指定具体的存储参数来获取初始区段大小,也不会分配

【数据库】Oracle 11g使用命令导入导出表,导出结果集

[数据库]Oracle 11g使用命令导入导出表,导出结果集 很久没敲命令进行Oracle数据库表的导入(imp),导出(exp)了,今天猛一敲,发现有些命令居然忘了,顺手写下这篇博文,记录一下! exp本地导出命令: 1 exp username/[email protected] file=d:\demo.dmpfull=y 2 exp username/[email protected] file=d:\demo.dmpowner=(xx) 3 exp username/[email pr

Oracle 11G R2 用exp无法导出空表解决方法

四.  Oracle 10g以后增加了expdp和impdp工具,用此工具也可以导出空的表 oracleexpdp/impdp 用法详解 1)  创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建. createdirectory db_bak as 'd:\test\dump'; 2)  查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错) select * fromdba_directories; 3)  给s

Oracle 11G在用EXP 导出时,空表不能导出解决[转]

转自:http://wanwentao.blog.51cto.com/2406488/545154 11G中有个新特性,当表无数据时,不分配segment,以节省空间 解决方法: 1.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segment.导出时则可导出空表. 2.设置deferred_segment_creation 参数 show parameter deferred_segment_creation NAME         

解决Oracle 11g在用EXP导出时,空表不能导出

一.问题原因:     11G中有个新特性,当表无数据时,不分配segment,以节省空间     1.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segment.导出时则可导出空表. 2.设置deferred_segment_creation 参数 show parameter deferred_segment_creation NAME                                 TYPE        VALU

Oracle 11g数据库详解(2015-1-18更新)

Oracle 11g数据库详解 整理者:高压锅 QQ:280604597 Email:[email protected] 大家有什么不明白的地方,或者想要详细了解的地方可以联系我,我会认真回复的 1   简介 数据库操作主要有以下几步: 1.  启动.停止数据库 2.  连接.断开数据库 3.  创建.修改.删除数据库用户 4.  表空间 5.  新建.修改.删除表 6.  查询.插入.修改.删除表数据 7.  新建.修改.删除视图 8.  新建.修改.删除存储过程 9.  新建.修改.删除触发

Oracle 11g R2 备份与恢复

Oracle 11g R2 Rman备份 1. 备份与恢复的定义及分类 备份的定义及分类: 备份就是把数据库复制到转储设备的过程.其中,转储设备是指用于放置数据库副本的磁带或磁盘.通常也将存放于转储设备中的数据库的副本称为原数据库的备份或转储.备份是一份数据副本,从不同的角度分类如下: 从物理与逻辑的角度来分类: 从物理与逻辑的,备份可以分为物理备份和逻辑备份. 物理备份:对数据库操作系统的物理文件(数据文件,控制文件和日志文件)的备份.物理备份又可以分为脱机备份(冷备份)和联机备份(热备份),

Oracle 11g数据库详解(2015-02-28更新)

Oracle 11g数据库详解 整理者:高压锅 QQ:280604597 Email:[email protected] 大家有什么不明白的地方,或者想要详细了解的地方可以联系我,我会认真回复的 1   简介 数据库操作主要有以下几步: 1.  启动.停止数据库 2.  连接.断开数据库 3.  创建.修改.删除数据库用户 4.  表空间 5.  新建.修改.删除表 6.  查询.插入.修改.删除表数据 7.  新建.修改.删除视图 8.  新建.修改.删除存储过程 9.  新建.修改.删除触发