熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

怎樣使兩台服務器的oracle9i的數據同步

2013-11-13 16:18:47  來源: Oracle 

  高機復制就是物化視圖
  物化視圖是包括一個查詢結果的數據庫對像它是遠程數據的的本地副本或者用來生成基於數據表求和的匯總表物化視圖存儲基於遠程表的數據也可以稱為快照
  
  物化視圖可以查詢表視圖和其它的物化視圖
  
  通常情況下物化視圖被稱為主表(在復制期間)或明細表(在數據倉庫中)
  
  對於復制物化視圖允許你在本地維護遠程數據的副本這些副本是只讀的如果你想修改本地副本必須用高級復制的功能當你想從一個表或視圖中抽取數據時你可以用從物化視圖中抽取
  
  對於數據倉庫創建的物化視圖通常情況下是聚合視圖單一表聚合視圖和連接視圖
  
  本篇我們將會看到怎樣創建物化視圖並且討論它的刷新選項
  
  在復制環境下創建的物化視圖通常情況下主鍵rowid和子查詢視圖
  
  主鍵物化視圖
  下面的語法在遠程數據庫表emp上創建主鍵物化視圖
  
  SQL> CREATE MATERIALIZED VIEW mv_emp_pk
  REFRESH FAST START WITH SYSDATE
  NEXT SYSDATE + /
  WITH PRIMARY KEY
  AS SELECT * FROM emp@remote_db;
  Materialized view created
  注意當用FAST選項創建物化視圖必須創建基於主表的視圖日志如下:
  
  SQL> CREATE MATERIALIZED VIEW LOG ON emp;
  Materialized view log created
  
  Rowid物化視圖
  下面的語法在遠程數據庫表emp上創建Rowid物化視圖
  
  SQL> CREATE MATERIALIZED VIEW mv_emp_rowid
  REFRESH WITH ROWID
  AS SELECT * FROM emp@remote_db;
  Materialized view log created
  
  子查詢物化視圖
  下面的語法在遠程數據庫表emp上創建基於emp和dept表的子查詢物化視圖
  
  SQL> CREATE MATERIALIZED VIEW mv_empdept
  AS SELECT * FROM emp@remote_db e
  WHERE EXISTS
  (SELECT * FROM dept@remote_db d
  WHERE edept_no = ddept_no)
  Materialized view log created
  REFRESH 子句
  
  [refresh [fast|complete|force]
  [on demand | commit]
  [start with date] [next date]
  [with {primary key|rowid}]]
  
  Refresh選項說明:
  
  a noracle用刷新方法在物化視圖中刷新數據
  
  b 是基於主鍵還是基於rowid的物化視圖
  
  c 物化視圖的刷新時間和間隔刷新時間
  
  Refresh方法FAST子句
  
  增量刷新用物化視圖日志(參照上面所述)來發送主表已經修改的數據行到物化視圖中如果指定REFRESH FAST子句那麼應該對主表創建物化視圖日志
  
  SQL> CREATE MATERIALIZED VIEW LOG ON emp;
  Materialized view log created
  
  對於增量刷新選項如果在子查詢中存在分析函數則物化視圖不起作用
  
  Refresh方法 COMPLETE子句
  
  完全刷新重新生成整個視圖如果請求完全刷新oracle會完成    完全刷新即使增量刷新可用
  
  Refresh Method – FORCE 子句
  
  當指定FORCE子句如果增量刷新可用Oracle將完成增量刷新否則將完成完全刷新如果不指定刷新方法(FAST COMPLETE or FORCE)Force選項是默認選項
  
  主鍵和ROWD子句
  
  WITH PRIMARY KEY選項生成主鍵物化視圖也就是說物化視圖是基於主表的主鍵而不是ROWID(對應於ROWID子句) PRIMARY KEY是默認選項為了生成PRIMARY KEY子句應該在主表上定義主鍵否則應該用基於ROWID的物化視圖
  
  主鍵物化視圖允許識別物化視圖主表而不影響物化視圖增量刷新的可用性
  
  Rowid物化視圖只有一個單一的主表不能包括下面任何一項:
  
  n Distinct 或者聚合函數
  
  n Group by子查詢連接和SET操作
  
  刷新時間
  
  START WITH子句通知數據庫完成從主表到本地表第一次復制的時間應該及時估計下一次運行的時間點 NEXT 子句說明了刷新的間隔時間
  
  SQL> CREATE MATERIALIZED VIEW mv_emp_pk
  REFRESH FAST
  START WITH SYSDATE
  NEXT SYSDATE +
  WITH PRIMARY KEY
  AS SELECT * FROM emp@remote_db;
  Materialized view created
  在上面的例子中物化視圖數據的第一個副本在創建時生成以後每兩天刷新一次
  
  總結
  物化視圖提供了可伸縮的基於主鍵或ROWID的視圖指定了刷新方法和自動刷新的時間

From:http://tw.wingwit.com/Article/program/Oracle/201311/18127.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.