oracle快照原理及實現總結
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資料庫中表空間和資料庫什麼區別?
ms sql使用者登入就能建立資料庫的意思是她本身就有乙個資料庫,你連的是預設資料庫。oracle安裝的時候也會問你是否在安裝資料庫軟體的時候建立乙個例項,如果你同意建立例項那麼你連線進來的時候也會有個預設的資料庫給你去建立表之類的東西。所以根本上這些都是差不多,都是因為他們裡面有例項在執行了。再說...
Oracle資料庫定時同步
通過執行定時任務從源資料庫 sourcedb 向目標資料庫 targetdb 進行資料同步操作。資料庫版本一致是進行資料同步的前置條件 在配置oracle客戶端的伺服器上執行以下命令 exp username password sourcedb file export home oracle dat...
Oracle資料庫資料同步方法
我這人有個習慣,看到自己認為好的文章,總要認認真真的抄回來。比較原始的,觸發器 job dblink的方式,可同步和定時重新整理。物化檢視重新整理的方式,有增量重新整理和完全重新整理兩種模式,定時重新整理。高階複製,分為多主複製和物化檢視複製兩種模式。其中多主複製能進行雙向同步複製和非同步複製,物化...