oracle空表导出问题的处理

最近在oracle导入和导出的时候发现一些问题,空表没有导出。 那么就需要对oracle的导出进行一些处理。 先做全局设置,先登录oracle。 show parameter defer; 查看是否 deferred_segment_creation 的值为true。 这个时候是不导出空表的。 alter system set deferred_segment_creation= false scope=spfile; 修改这个值为false,以后新建的空表就可以导出了。 对于原有的空表。首先查询 select 'alter table XXXXXX.'||table_name||' allocate extent;' from dba_tables where num_rows=0 where owner='XXXXXX' ; XXXX代表用户名。 然后将查询到的语句拷贝出来,执行。将空表分配空间。 再导出,就会发现空表也导出来了。

上面有可能检查不全,可以用下面的语句再查询一次

检查user_tables表发现没有导出的表的segment_created属性是NO

解决办法:

1、可通过下面语句生成SQL执行:

select 'alter table '|| table_name ||' move;'
 from user_tables where segment_created='NO';

或是
select 'alter table '|| table_name ||' allocate extent;'
 from user_tables where segment_created='NO';

 

impdb导出导入

expdp SRM_DEMO/password schemas=SRM_DEMO directory=data_pump_dir dumpfile =SRM_DEMO.dmp logfile=expdp_SRM_DEMO.log;

 

 impdp SRM_DEMO3/SRM_DEMO3 directory=data_pump_dir dumpfile=srmdemo615.dmp  REMAP_SCHEMA=SRM_DEMO:SRM_DEMO3 REMAP_TABLESPACE=SRM_DEMO:SRM_DEMO3 table_exists_action=replace;

 

 

 

 

 

 

猜你喜欢

转载自pengjj2.iteye.com/blog/2332732