Oracle快照原理及實現總結

來源:互聯網
上載者:User

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

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

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

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

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

  create database link TEST_DBLINK.US.ORACLE.COM

  connect to AMICOS identified by AMICOS

  using ’test’;

  第二步:在業務資料庫上對應的表建立快照日誌

  Create snapshot log on A_Table;

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

  Create snapshot Test_SnapShot

  REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/24

  as select * from A_Table@TEST_DBLINK

  說明:REFRESH是重新整理方法

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

  Next是下次執行的時間

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

  相關的方法:

  更改快照

  ALTER SNAPSHOT Test_SnapShot

  REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/2;

  手動重新整理快照 在命令介面執行:

  EXEC DBMS_SNAPSHOT.REFRESH(’Test_SnapShot ’,’C’);

  第一個參數是要重新整理的快照名

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

  查看快照最後重新整理的日期

  SELECT NAME,LAST_REFRESH

  FROM ALL_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。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.