程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle快照原理及實現總結

Oracle快照原理及實現總結

編輯:關於Oracle數據庫

  由於工作需要,今天需要將業務數據庫裡所有的數據同步到另外一個處理服務器上。在做方案的時候,想了很多方法,當然最快的辦法還是使用物理熱備的方式。

  但是我個人認為如果對於中大型數據庫(我們的數據庫有300G左右)最佳的選擇還是使用SnapShot方式,即快照的方式。

  Oracle數據庫的快照是一個表,它包含有對一個本地或遠程數據庫上一個或多個表或視圖的查詢的結果。也就是說快照根本的原理就是將本地或遠程數據庫上的一個查詢結果保存在一個表中。

  以下是我建立的Snapshot,目的是從業務數據庫上將數據Copy到處理數據庫上,是不同的兩個服務器之間對數據copy。

  第一步:在處理服務器上的Oracle終端,建立database link,業務數據庫服務器SID為TEST 

   createdatabaselinkTEST_DBLINK.US.ORACLE.COM
  connecttoAMICOSidentifiedbyAMICOS
  using'test';

  第二步:在業務數據庫上對應的表建立快照日志 

   CreatesnapshotLogonA_Table;

  第三步:建立Snapshot 快照名稱為:Test_SnapShot 

   CreatesnapshotTest_SnapShot
  REFRESHCOMPLETESTARTWITHSYSDATENEXTSYSDATE+1/24
  asselect*fromA_Table@TEST_DBLINK

  說明:REFRESH是刷新方法

  刷新方式有:COMPLETE和FAST兩種,而START WITH是說明開始執行的時間。

  Next是下次執行的時間

  而AS以後是構成快照的查詢方法。

  相關的方法:

  更改快照  

   ALTERSNAPSHOTTest_SnapShot
  REFRESHCOMPLETESTARTWITHSYSDATENEXTSYSDATE+1/2;

  手動刷新快照 在命令界面執行: 

   EXECDBMS_SNAPSHOT.REFRESH('Test_SnapShot','C');

  第一個參數是要刷新的快照名

  第二個參數是刷新的方式,F----FAST, C---COMPLETE

  查看快照最後刷新的日期 

   SELECTNAME,LAST_REFRESH
  FROMALL_SNAPSHOT_REFRESH_TIMES;

  最後非常的方案:

  1:為需要做Snapshot的表建立Snapshot日志

  create snapshot log on t1 with rowid; 這裡使用ROWID建立日記的參數

  2:采用Fast的方式建立快照,使用rowid做為參考參數

  create snapshot fb_test_b refresh fast with rowid start with sysdate next sysdate+1/1440 as select * from fb_test_b@my_dblink;

  最好能按照rowid來建立快照。要不然就必須要為表建立Primary Key。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved