利用oracle 傳輸表空間來實現歷史資料分離的方案

paulyibinyi發表於2009-07-02

         ORACLE 傳輸表空間的方法來實現歷史資料的分離
    Oracle的傳輸表空間是指:可以將一個資料庫上的一個或多個表空間的全部資料檔案複製到另一個資料庫伺服器上,透過匯入的方式將表空間載入當目標資料庫。
 使用這種方法的最大好處是速度快,所需要的時間和複製資料檔案差不多,比執行EXP/IMP的匯入匯出要快得多。

具體實現方法:以oa使用者下T_DOC_PREFS為例,分離出2008年的資料
   一.生產庫操作
    1.新建立個2008年的表空間,存放表T_DOC_PREFS分離出來的2008年資料
     假設表空間名為TS_2008
     CREATE TABLESPACE TS_2008 DATAFILE '/DEV/RFILE' SIZE 10000M;   

        --備註具體大小需要評估下一年資料量多大

    2.用cats方法來建立一個新表存放T_DOC_PREFS分離出來的2008年資料
     CREATE TABLE T_DOC_PREFS_2008 TABLESPACE TS_2008  AS SELECT * FROM T_DOC_PREFS WHERE DATE
     BETWEEN TO_DATE('2008-01-01 00:00:00','YYYY-MM-DD')  AND TO_DATE('2008-12-31 23:59:59','YYYY-MM-DD')

         --備註具體sql查詢出2008年的資料由軟體開發商定。
   3.設定Ts_2008表空間為只讀
     ALTER TABLESPACE   TS_2008 READ ONLY;
 
   4.用exp方法 匯出表空間
     EXP " AS SYSDBA" FILE=/OPT/TS_2008.DMP TRANSPORT_TABLESPACE=Y TABLESPACES=TS_2008
  
   5.複製 ts_2008.dmp 檔案 以二進位制方式到新主機資料庫上

  二.目標庫操作
  
   6.在新主機資料庫上建立需要匯入的使用者如OA_2008
     CREATE USER OA_2008 IDENTIFIED BY OA_2008;

   7.匯入2008年資料到OA_2008使用者中
     IMP " AS SYSDBA" FROMUSER=OA TOUSER=OA_2008 FILE=/OPT/TS_2008.DMP TRANSPORT_TABLESPACE=Y TABLESPACES=TS_2008   
  
   8.然後在新機器上對ts_2008表空間設為可讀寫
     ALTER TABLESPACE TS_2008 READ WRITE;
 
   9.開發檢查資料的一致性。

 其他年份需要分離的資料採取方法同上,以上方法已經透過測試。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7199859/viewspace-608185/,如需轉載,請註明出處,否則將追究法律責任。

相關文章