`

oracel 10g数据库部分表的导入导出

 
阅读更多

问题起因:在一次导回数据库的时候发现数据库过大,导回比较困难,通过数据库相关查询发现了问题

 

select sum(bytes)/1024/1024/1024 from user_segments;    -- 大概20G数据

 

select segment_name,bytes/1024/1024 from user_segments order by bytes/1024/1024 desc  ;  -- 找到具体是哪些表占用大的空间,通过倒叙可以看到前几个占用空间较大的对象,将这些对象 通过下面的查询 找到对应的表

 

select * from user_objects where object_name='SYS_LOB0000055475C00005$$';

 

找到具体的两张表中有大字段,表是 'ERECEIVEFILE','ESENDFILE' 这两张表都存在大字段,大约占了16G的数据,不想将这两张表的数据导出

所以就有了这样的问题:

 

提出的问题:

oracle 10g 数据库导出数据时不导出某些表,导出其它所有表;导入时:不导入某些表,其它表全部导入

 

网上说 exp,imp  做不到

如果是10g或者以上版本的话 可以用expdp 这个可以 排除表

Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dup EXCLUDE=table:"in('tablename1'...)"

 

解决方法:

具体做法如下:

 

=================================================

sqlplus/nolog

conn carmot_hz_8/carmot@10.168.1.22:1521/IGRP;

 

CREATE OR REPLACE DIRECTORY dir_dump  AS 'D:/dbbak/bak';

 

GRANT READ, WriTE ON DIRECTORY dir_dump TO public;

 

--导回数据库

Expdp carmot_hz_8/carmot@10.168.1.22:1521/IGRP DIRECTORY=DIR_DUMP DUMPFILE=201207171030-carmot_hz_8.dp EXCLUDE=TABLE:\"IN('ERECEIVEFILE', 'ESENDFILE')\" logfile=carmot.log

 

================================================

 

sqlplus/nolog

conn carmot_hz_8/carmot@DEV_10.4.247.92;

 

 

CREATE OR REPLACE DIRECTORY dir_dump  AS 'D:/dbbak/bak';

 

GRANT READ, WriTE ON DIRECTORY dir_dump TO public;

--导入数据库

Impdp carmot_hz_8/carmot@DEV_10.4.247.92  DIRECTORY=DIR_DUMP DUMPFILE=201207171030-carmot_hz_8.dp EXCLUDE=TABLE:\"IN('ERECEIVEFILE', 'ESENDFILE')\" logfile=carmot.log

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics