本文將詳細介紹oracle 10g 快照操作方法包括創建、刷新、修改等,需要了解的朋友可以參考下
一不小心聽說了oracle 數據庫快照,這個詞我當初一聽就楞了,不知道這個是什么玩意,然后花了點時間研究了下,以下是我通過網絡學習總結的
快照主要是用于分布式數據庫,我們有數據庫A,A中有個表a,我們在數據庫B中要使用數據庫A中a表的數據,這時候我們就可以在數據庫B中創建數據庫A的快照,這樣可以提高我們的效率。
我理解快照就是對表的復制,定時的將a表復制到b表(包括數據)
注意:用快照創建的表是只讀的
創建快照的方法:
1、先需要在A數據庫中建立表a的快照日志
只有先建立表a的快照日志,才能在快照中執行快速刷新
Create snapshot log on a;
2、在數據庫B下建立到數據庫A用戶的數據庫鏈link
a)只有建立了到A數據庫(用戶)的數據庫鏈后才能從A數據庫(用戶)下的表a中獲取數據
Create database link link_test
Connect to A數據庫用戶名(username)identified by A數據庫密碼(password) using ‘數據庫名(database)’
此圖為用pl/sql建立link的視圖
3、在數據庫B下建立a表的快照
Create snapshot t_a——>將來在數據B中對于a表快照顯示的表名
REFRESH COMPLETE START WITH SYSDATE+1/24*60*60 NEXT SYSDATE+1/24*60
as select * from a@link_test
SYSDATE+1/24*60*60:表示設定oracle 自動在1秒鐘執行刷新,NEXT SYSDATE+1/24*60
表示以后每個1分鐘自動刷新一次
說明: REFRESH是刷新方法
刷新方式有:COMPLETE(完全刷新)和FAST(快速刷新)兩種,
而START WITH是說明開始執行的時間。
Next是下次執行的時間
而AS以后是構成快照的查詢方法。
刷新方法:
快照的刷新有兩種方式:快速刷新和完全刷新。快速刷新需要快照的主表先有快照日志存在;完全刷新時oracle執行快照查詢,將結果放入快照。快速刷新比完全刷新快,因為快速刷新將主數據庫的數據經網絡發送到快照的數據少,僅需傳送主表中修改過的數據,而完全刷新要傳送快照查詢的全部結果。
4、修改快照
Alter snapshot t_a refresh fast
Start with sysdate+1/2880 next sysdate+1
此sql語句意思:設定oracle 自動在30秒(30/24*60*60)后進行第一次快速刷新,以后,每隔1天快速刷新一次
5、查看快照最后刷新的日期
SELECT NAME,LAST_REFRESH
FROM ALL_SNAPSHOT_REFRESH_TIMES
6、手動刷新快照在命令界面執行:
EXEC DBMS_SNAPSHOT.REFRESH(‘t_a ‘,’C’);
第一個參數是要刷新的快照名
第二個參數是刷新的方式,F—-FAST, C—COMPLETE
7、說明:
a) 建立快照日志時oracle數據庫為我們建立了一個基于a的觸發器(我沒有找到)
tlog$_a和快照日志表mlog$_a(這個已經找到);
網上朋友說在建立快照時建立了一些表,視圖之類的,但是我只找到了表,其他的沒有找到,希望得到大家的幫助。
總結的如果有什么問題請大家多多指出,共同進步。