ORACLE 11G中有个新特性,当表无数据时,不分配segment,以节省空间
解决方法:
1、insert一行,再rollback就产生segment了。
该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。
2、设置deferred_segment_creation 参数
SQL>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
成功!
分享到:
相关推荐
Oracle 11g导出空表、少表的解决办法 ORACLE 11G中有个新特性,当表无数据时,不分配segment,以节省空间。 解决方法: 1)insert一行,再rollback就产生segment了 该方法是在在空表中插入数据,再删除,则...
oracle11g导出空表、少表的解决方案
oracle 11g R2 新增的特性,exp无法导出空表,可以通过expdp命令导出,具体在附件里。
Oracle导出空表解决办法
oracle11G-解决空表导出的问题-带实例,操作步骤。
解决Oracle导出dmp文件空表导不出问题!可有效的处理到处问题
exp命令导出oracle11g的数据库时,空表会出现错误
Oracle11g使用exp导出空表,解决备份无法导出空表的问题
oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出。此资源提供将空表导出的的两种方法。
有效的解决了Oracle数据库中 空表不能导出的问题,大大节省了开发时间。
解决Oracle 11G空表数据不能导出[程序/源码]
数据库导出时候因为版本问题,导出空表时候会报错,这里有解决办法。
文档有为什么oracle 11g不能导出空白,导出空表的详细操作方法(很简便哦)
oracle空白表导出的配置操作说明。根据说明进行操作。
oracle11G导出NULL表设置于密码不过期设置
oracle11g对于空表用exp不能导出的解决办法.txt
oracle11g导出还原到oracle10g
Oracle 11g R2 执行export导出时 空表无法导出原因及解决方法
Oracle从11g导出到10g。经过测试可以通过。 这里表空间、用户名、用户密码都是aa。
Oracle导入导出自动备份