Oracle11G用EXP导出时,空表不能导出解决

简介: Oracle11G用EXP导出时,空表不能导出解决

Oracle11G用EXP导出时,空表不能导出解决:

11G中有个新特性,当表无数据时,不分配segment,以节省空间

解决

方法一:insert一行,再rollback就产生segment了

该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。

方法二:设置deferred_segment_creation 参数

show parameter deferred_segment_creation
  NAME                                 TYPE        VALUE
  ------------------------------------ ----------- ------------------------------
  deferred_segment_creation            boolean     TRUE
alter system set deferred_segment_creation=false;
  系统已更改。
show parameter deferred_segment_creation
  NAME                                 TYPE        VALUE
  ------------------------------------ ----------- ------------------------------
  deferred_segment_creation            boolean     FALSE
  • 该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。
  • 注意:该值设置后对以前导入的空表不起作用,仍不能导出,只能对后面新增的表起作用。
  • 如需导出之前的空表,只能用第一种方法。

方法三:

  1. 先查询一下当前用户下的所有空表
select table_name from user_tables where NUM_ROWS=0;
  1. 用以下这句查找空表
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
  1. 把查询结果导出,执行导出的语句
'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;
  1. 然后再执行
exp 用户名/密码@数据库名 file=/home/oracle/exp.dmp log=/home/oracle/exp_smsrun.log
  exp camsjs/camsjs@orcl file=E:\CAMSJS0421.dmp owner=camsjs


相关文章
|
Oracle 关系型数据库 数据库
9-2 Oracle数据库(表)的逻辑备份与恢复 --导出与导入
9-2 Oracle数据库(表)的逻辑备份与恢复 --导出与导入
177 1
|
6月前
|
存储 SQL Oracle
oracle 存储过程导出sql语句 导出为文件
oracle 存储过程导出sql语句 导出为文件
190 0
|
7月前
|
SQL Oracle 关系型数据库
Oracle 数据泵导出导入(映射表空间、Schema)
Oracle 数据泵导出导入(映射表空间、Schema)
|
Oracle 关系型数据库 数据库
oracle导入时IMP-00010: 不是有效的导出文件, 头部验证失败
oracle导入时IMP-00010: 不是有效的导出文件, 头部验证失败
238 1
|
7月前
|
SQL Oracle 关系型数据库
Oracle - Spool导出数据到TXT文件
Oracle - Spool导出数据到TXT文件
115 0
|
SQL Oracle 关系型数据库
导出Oracle数据库sqlplus命令行查询的结果到文件
导出Oracle数据库sqlplus命令行查询的结果到文件
888 0
|
Oracle 关系型数据库 数据库
通过数据泵expdp、impdp方式备份与还原(导出与导入)Oracle数据库
通过数据泵expdp、impdp方式备份与还原(导出与导入)Oracle数据库
|
Oracle 关系型数据库 网络安全
ORACLE创建、授权、导入、导出
ORACLE创建、授权、导入、导出
107 0
|
Oracle 关系型数据库 数据库
Oracle expdp impdp导出导入命令及数据库备份
Oracle expdp impdp导出导入命令及数据库备份
300 0
|
Oracle 关系型数据库