程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle跨平台遷移結構而不遷移數據方法詳解

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 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved