Oracle跨平台迁移结构而不迁移数据方法详解


  本文标签:Oracle跨平台迁移

  本文将介绍Oracle跨平台迁移,比如从Oracle跨平台迁移到其他类型的数据库,但是保留原有结构  。这样也能减轻DBA的很多工作负担  。希望本文能帮助大家更好的理解Oracle跨平台迁移  。

  1、在原库中导出相关信息:

  1. expdp system/sywg1234 directory=test dumpfile=test.dump logfile=test.log   
  2. schemas=SYWG,GAZX,WEBCALL,HQ,SJCK,SJPZ CONTENT=METADATA_ONLY 

  2、去原库的表空间信息:

  去TOAD导出表空间信息,后编辑导出脚本,将系统相关的信息删除;将目录及文件大小按实际需要更改.

  3、到目的库中操作:

  将原库中导出的dump文件,CP到目的库中一个目录下;

  创建导入目录;

  1. impdp system/sywg1234 directory=test dumpfile=test.dump logfile=test_imp.log   
  2. CONTENT=METADATA_ONLY exclude=statistc 

  注:

  此时有一个很大的问题,就是即使导入的是表结构,无数据,但还是占用大量的表空间,这确实是一个比较大的问题

  4、到目的库导入后,分析所有表:

  --生成统计信息分析脚本:

  1. select analyze table ||owner||.||table_name || compute  statistics; from all_tables  
  2. where OWNER in (GAZX,SJCK,SJPZ,SYWG,HQ,WEBCALL) 

  ---执行上面生成的脚本,以进行统计信息的更新

  5、压缩空表占用的大量表空间:

  ---查看表的占用空间情况,

  1. SELECT OWNER,segment_name,SEGMENT_TYPE,BYTES/1024/1024 FROM DBA_SEGMENTS  
  2. WHERE OWNER=GAZX 
  3. ORDER BY 4 DESC 

  ---确认表中是否有数据

  1. SELECT * FROM GAZX.GSGG 

  ---查看表是否允许row_movement

  1. select a.row_movement,a.* from all_tables a 
  2. where  a.owner=GAZX  AND a.TABLE_NAME=GSGG 

  ---若不允许,则开启row_movement

  1. alter table GAZX.GSGG enable row movement; 

  生成批量处理的脚本:

  1. SELECT ALTER TABLE GAZX.||SEGMENT_NAME|| enable row movement; 
  2. FROM DBA_SEGMENTS  
  3. WHERE OWNER=GAZX AND SEGMENT_TYPE=TABLE 

  ----压缩表占用的空间

  1. ALTER TABLE  GAZX.GSGG SHRINK SPACE CASCADE; 

  生成批量处理的脚本:

  1. SELECT ALTER TABLE GAZX.||SEGMENT_NAME|| SHRINK SPACE CASCADE; 
  2. FROM DBA_SEGMENTS  
  3. WHERE OWNER=GAZX AND SEGMENT_TYPE=TABLE 
 

  ----压缩表完毕后,压缩数据文件

  6、原库和目的库的校对:

  导入后校对:

  ---核对表的数量

  1. select  OWNER,COUNT(TABLE_NAME) from all_tables  
  2. where OWNER in (GAZX,SJCK,SJPZ,SYWG,HQ,WEBCALL)  
  3. GROUP BY OWNER 

  ---核对索引的数量

  

  1. SELECT OWNER,COUNT(TABLE_NAME) FROM ALL_INDEXES  
  2. where OWNER in (GAZX,SJCK,SJPZ,SYWG,HQ,WEBCALL)  
  3. GROUP BY OWNER 

  

  原文链接:http://blog.chinaunix.net/u/7586/showart_2162360.html