本文將介紹Oracle跨平台遷移,比如從Oracle跨平台遷移到其他類型的數據庫,但是保留原有結構。這樣也能減輕DBA的很多工作負擔。希望本文能幫助大家更好的理解Oracle跨平台遷移。
1、在原庫中導出相關信息:
- expdp system/sywg1234 directory=test dumpfile=test.dump logfile=test.log
- schemas=SYWG,GAZX,WEBCALL,HQ,SJCK,SJPZ CONTENT=METADATA_ONLY
2、去原庫的表空間信息:
去TOAD導出表空間信息,後編輯導出腳本,將系統相關的信息刪除;將目錄及文件大小按實際需要更改.
3、到目的庫中操作:
將原庫中導出的dump文件,CP到目的庫中一個目錄下;
創建導入目錄;
- impdp system/sywg1234 directory=test dumpfile=test.dump logfile=test_imp.log
- CONTENT=METADATA_ONLY exclude=statistc
注:
此時有一個很大的問題,就是即使導入的是表結構,無數據,但還是占用大量的表空間,這確實是一個比較大的問題
4、到目的庫導入後,分析所有表:
--生成統計信息分析腳本:
- select 'analyze table '||owner||'.'||table_name ||' compute statistics; 'from all_tables
- where OWNER in ('GAZX','SJCK','SJPZ','SYWG','HQ','WEBCALL')
---執行上面生成的腳本,以進行統計信息的更新
5、壓縮空表占用的大量表空間:
---查看表的占用空間情況,
- SELECT OWNER,segment_name,SEGMENT_TYPE,BYTES/1024/1024 FROM DBA_SEGMENTS
- WHERE OWNER='GAZX'
- ORDER BY 4 DESC
---確認表中是否有數據
- SELECT * FROM GAZX.GSGG
---查看表是否允許row_movement
- select a.row_movement,a.* from all_tables a
- where a.owner='GAZX' AND a.TABLE_NAME='GSGG'
---若不允許,則開啟row_movement
- alter table GAZX.GSGG enable row movement;
生成批量處理的腳本:
- SELECT 'ALTER TABLE GAZX.'||SEGMENT_NAME||' enable row movement;'
- FROM DBA_SEGMENTS
- WHERE OWNER='GAZX' AND SEGMENT_TYPE='TABLE'
----壓縮表占用的空間
- ALTER TABLE GAZX.GSGG SHRINK SPACE CASCADE;
生成批量處理的腳本:
- SELECT 'ALTER TABLE GAZX.'||SEGMENT_NAME||' SHRINK SPACE CASCADE;'
- FROM DBA_SEGMENTS
- WHERE OWNER='GAZX' AND SEGMENT_TYPE='TABLE'
----壓縮表完畢後,壓縮數據文件
6、原庫和目的庫的校對:
導入後校對:
---核對表的數量
- select OWNER,COUNT(TABLE_NAME) from all_tables
- where OWNER in ('GAZX','SJCK','SJPZ','SYWG','HQ','WEBCALL')
- GROUP BY OWNER
---核對索引的數量
- SELECT OWNER,COUNT(TABLE_NAME) FROM ALL_INDEXES
- where OWNER in ('GAZX','SJCK','SJPZ','SYWG','HQ','WEBCALL')
- GROUP BY OWNER