本文将介绍
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