Oracle快照原理及實現總結

2021-08-25 15:51:20 字數 1727 閱讀 4653

oracle資料庫的快照是乙個表,它包含有對乙個本地或遠端資料庫上乙個或多個表或檢視的查詢的結果。對於中大型資料庫,業務資料庫裡所有的資料同步到另外乙個處理伺服器上最佳的選擇還是使用snapshot方式,即快照的方式。

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

但是我個人認為如果對於中大型資料庫(我們的資料庫有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建立日記的引數

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。

Oracle快照原理及實現總結

from oracle資料庫的快照是乙個表,它包含有對乙個本地或遠端資料庫上乙個或多個表或檢視的查詢的結果。也就是說快照根本的原理就是將本地或遠端資料庫上的乙個查詢結果儲存在乙個表中。以下是建立的snapshot,目的是從業務資料庫上將資料copy到處理資料庫上,是不同的兩個伺服器之間對資料copy...

儲存快照實現原理

儲存快照有兩種實現方式 cow 寫時複製copy on write row 寫重定向redirect on write 兩種實現方法有區別,造成讀寫效能 應用場景有比較大的區別。cow 原理見下圖 從網上找的,沒自己畫 1 原卷資料是a g。此卷metedata像指標一樣指向這些資料。2 當做快照時...

Oracle快照實現 整理

名詞說明 源 被同步的資料庫 目的 要同步到的資料庫 一 建立dblink 1 在目的資料庫上,建立dblin drop database link dblink anson create public database link dblink anson connect to lg identif...