11G中有个新特性,当表无数据时,不分配segment,以节省空间
解决方法:
1、insert一行,再rollback就产生segment了。
该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。
2、设置deferred_segment_creation 参数
show parameter deferred_segment_creation
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation boolean TRUE
SQL> alter system set deferred_segment_creation=false;
系统已更改。
SQL> show parameter deferred_segment_creation
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation boolean FALSE
该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。
需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。如需导出之前的空表,只能用第一种方法。
搞了我好久,最后查到这个方法。
先查询一下当前用户下的所有空表
select table_name from user_tables where NUM_ROWS=0;
用以下这句查找空表
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
把查询结果导出,执行导出的语句
'ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;'
-----------------------------------------------------------
alter table AQ$_AQ$_MEM_MC_H allocate extent;
alter table AQ$_AQ$_MEM_MC_G allocate extent;
alter table AQ$_AQ$_MEM_MC_I allocate extent;
alter table AQ$_AQ_PROP_TABLE_T allocate extent;
alter table AQ$_AQ_PROP_TABLE_H allocate extent;
alter table AQ$_AQ_PROP_TABLE_G allocate extent;
alter table AQ$_AQ_PROP_TABLE_I allocate extent;
alter table AQ$_KUPC$DATAPUMP_QUETAB_T allocate extent;
alter table AQ$_KUPC$DATAPUMP_QUETAB_H allocate extent;
alter table AQ$_KUPC$DATAPUMP_QUETAB_G allocate extent;
alter table AQ$_KUPC$DATAPUMP_QUETAB_I allocate extent;
'ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;'
-----------------------------------------------------------
alter table AQ$_SYS$SERVICE_METRICS_TAB_T allocate extent;
alter table AQ$_SYS$SERVICE_METRICS_TAB_H allocate extent;
alter table AQ$_SYS$SERVICE_METRICS_TAB_G allocate extent;
alter table AQ$_SYS$SERVICE_METRICS_TAB_I allocate extent;
然后再执行
exp 用户名/密码@数据库名 file=/home/oracle/exp.dmp log=/home/oracle/exp_smsrun.log
成功!
==============================
本文内容来源于网络
http://wanwentao.blog.51cto.com/2406488/545154
============================
分享到:
相关推荐
Oracle11g使用exp导出空表,解决备份无法导出空表的问题
oracle 11g R2 新增的特性,exp无法导出空表,可以通过expdp命令导出,具体在附件里。
ORACLE 11G中有个新特性,当表无数据时,不分配segment,以节省空间。 解决方法: 1)insert一行,再rollback就产生segment了 该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。 ...
oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出。此资源提供将空表导出的的两种方法。
oracle11G-解决空表导出的问题-带实例,操作步骤。
有效的解决了Oracle数据库中 空表不能导出的问题,大大节省了开发时间。
exp命令导出oracle11g的数据库时,空表会出现错误
文档有为什么oracle 11g不能导出空白,导出空表的详细操作方法(很简便哦)
解决Oracle导出dmp文件空表导不出问题!可有效的处理到处问题
Oracle导出空表解决办法
数据库导出时候因为版本问题,导出空表时候会报错,这里有解决办法。
在ORCAL11G采用exp导出.dmp文件时候,如果有表没有数据为空表时候,不能导出表的解决办法。
oracle11g导出空表、少表的解决方案
Oracle设置导出时导出空表
Oracle 11g R2 执行export导出时 空表无法导出原因及解决方法
解决oracle10以上版本导出空表失败的问题、有详细文字描述以及截图
oracle空白表导出的配置操作说明。根据说明进行操作。
解决Oracle 11G空表数据不能导出[程序/源码]
导出表导出表导出表导出表 导出表导出表导出表 导出表导出表导出表导出表 导出表导出表导出表导出表 导出表导出表导出表导出表
oralce11g数据导出/导入,因11g在导出数据表时没有空数据表进行导出,如果从11g导出后再重新导入时就是报错。