日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Oracle 11g 通过创建物化视图实现不同数据库间的表数据同步

發布時間:2025/3/17 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle 11g 通过创建物化视图实现不同数据库间的表数据同步 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Oracle 11g 物化視圖語法如下:

  • create materialized view [view_name]
  • refresh [fast|complete|force]
  • [
  • on [commit|demand] |
  • start with (start_time) next (next_time)
  • ]
  • as
  • {創建物化視圖用的查詢語句}
  • 以上是Oracle創建物化視圖(Materialized View,以下簡稱MV)時的常用語法,各參數的含義如下:

    1.refresh [fast|complete|force] 視圖刷新的方式:


    fast: 增量刷新.假設前一次刷新的時間為t1,那么使用fast模式刷新物化視圖時,只向視圖中添加t1到當前時間段內,主表變化過的數據.為了記錄這種變化,建立增量刷新物化視圖還需要一個物化視圖日志表。create materialized view log on (主表名)。(多張表時,此語句也生效,創建后,原來的表中會多出兩類視圖表:MLOG$_table_name和RUPD$_table_namecomplete:全部刷新。相當于重新執行一次創建視圖的查詢語句。
    force: 這是默認的數據刷新方式。當可以使用fast模式時,數據刷新將采用fast方式;否則使用complete方式。

    2.MV數據刷新的時間:
    ? on demand:在用戶需要刷新的時候刷新,這里就要求用戶自己動手去刷新數據了(也可以使用job定時刷新)
    on commit:當主表中有數據提交的時候,立即刷新MV中的數據;
    start ……:從指定的時間開始,每隔一段時間(由next指定)就刷新一次;
    比如說我們要全刷新一張mv_test物化視圖: begin
    dbms_mview.refresh(TAB=>'MV_TEST',
    METHOD=>'COMPLETE',
    PARALLELISM=>8);
    end;
    / 增量刷新就不需要使用什么并行了,通常情況下,是沒有那個必要的。 begin
    dbms_mview.refresh(TAB=>'MV_TEST',
    METHOD=>'FAST',
    PARALLELISM=>1);
    end;
    / 或者,也可以這樣執行: exec dbms_mview.refresh('MV_TEST','F'); 寫此文,只是幫自己記住一些基本的語法,到時可以參照。 dbms_mview.refresh('表名', 'F') --快速刷新,也就是增量刷新
    dbms_mview.refresh('表名', 'C')--完全刷新

    以下是我創建物化視圖的一個過程記錄(兩臺服務器A和B,其中,要把數據從A節點同步到B節點上): 1.在A上先創建view log:

  • SQL> create materialized view log on TEST1;
  • Materialized view log created.
    ?
  • SQL> create materialized view log on TEST2;
  • Materialized view log created.
  • 2.在B上創建通向A的db link:

  • SQL>grant CREATE DATABASE LINK,CREATE PUBLIC DATABASE LINK to test;
  • Grant succeeded.
  • SQL> create database link db_link_A connect to A_user identified by "A_user_passwd" using 'db_A01';
  • Database link created.
  • SQL> create materialized view mv1_test1 refresh fast on demand as select * from test1@db_link_A ;
  • Materialized view log created.
  • SQL> create materialized view mv1_test2 refresh fast on demand as select * from test2@db_link_A ;
  • Materialized view log created.
  • SQL> exec dbms_mview.refresh('MV1_test1','F');
  • SQL> exec dbms_mview.refresh('MV1_test2','F');
  • 3.在B節點查詢同步數據的情況:

  • SQL> select mview_name, last_refresh_date, staleness from user_mviews;
  • MVIEW_NAME LAST_REFRESH_DATE STALENESS
  • ------------------------------ ------------------- -------------------
    • MV1_TEST1 2021-03-02 11:22:14 UNDEFINED
      ?
    • MV1_TEST2 2021-03-02 11:22:22 UNDEFINED
  • 4.在A節點上查詢同步數據日志情況:

    SQL> select log_owner,master,log_table,PRIMARY_KEY,LAST_PURGE_DATE,LAST_PURGE_STATUS from user_mview_logs;

    LOG_OWNER MASTER LOG_TABLE PRI LAST_PURGE_DATE LAST_PURGE_STATUS

    • TCODE TEST1 MLOG$_TEST1 YES 2012-03-01 14:01:39 0
      ?
    • TCODE TEST2 MLOG$_TEST2 YES 2012-03-01 14:01:39 0
      ?

    轉載于:https://blog.51cto.com/255361/837476

    總結

    以上是生活随笔為你收集整理的Oracle 11g 通过创建物化视图实现不同数据库间的表数据同步的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。