【解決方案】之基於iot表建物化視圖的數據高級複製

        來廣州一個星期了,給XX基金做oracle數據實時複製容災項目,問題層出不窮,私人問題也糾結不清呵,xx剛跟俺say goodbye,刺激的姐妹看快樂大本營都淚流滿面,鴨梨呀鴨梨,哭完了睡覺眼腫,睜着眼碼字吧。。
         在廣州住在江邊,爲了迎接亞運珠江也跟秦淮河邊紅花綠柳般花姿招展,美,就是美。廣交會一期俺趕上了,二期俺還趕上了,公司悲劇了,漢庭翻番着漲,呵呵。
           姐妹是oracle第三方軟件廠商的人,平時專做數據實時複製,每次做技術交流的時候俺們都一再鄭重聲明此軟件不支持iot表,不支持物化視圖,不支持udt,10月19日猛然間發現客服系統有兩個iot表,俺當是就一驚呀,這合同都簽了咋辦呢,加上基金公司也迎亞運,證監會月底檢查,沒辦法硬着頭皮上吧,好在4個系統中就有兩張iot表。
           解決方案,A主系統基於iot表創建物化視圖日誌,B備機創建dblink以可以訪問到A系統的iot表,之後再通過該dblink創建A系統iot表的物化視圖,設定每5秒刷一次,不算實時,在沒辦法的情況下先這麼做吧呵。因爲之前也沒做過,設想一下邏輯可行,接着就測試吧。
            步驟如下:
 1.在做該複製之前,首先需要A、B間tns可以ping的通,不通其他都是浮雲。
     配置服務名,tnsnames.ora文件來確保tnsping暢通。
 
2.A系統基於iot表創建物化視圖日誌,該日誌主要用於刷增量,記錄數據變化信息。
  
create MATERIALIZED VIEW LOG ON TFLOATING_PROFIT_LOSS;
create MATERIALIZED VIEW LOG ON TFLOATING_PROFIT_LOSS_0622;
 物化視圖日誌創建成功。
SQL> SELECT * FROM TAB WHERE TNAME LIKE 'M%';

TNAME                                                    TABTYPE    CLUSTERID
------------------------------ ------- ----------
MAILLIST                                             TABLE
MAILSENDLOG                                       TABLE
MAILSENDSTAT                                     TABLE
MAILTEMPLET                                       TABLE
MLOG$_TFLOATING_PROFIT_LOS              TABLE
MLOG$_TFLOATING_PROFIT_LOS1            TABLE
MLOG$即是創建的物化視圖日誌。
 
3.B備機創建dblink,可以訪問到A的iot表。
grant create database link to user;
conn kfdata/kfdata@gebkdb --------------------登錄目標端用戶
create database link db_link_user connect to kfdata identified by kfdata using 'fm';
創建dblink,登錄用戶與密碼需要與A系統的完全一致
connet to user 指源端iot用戶,fm指tns可以ping通的源端字符串。
SQL> select count(* ) from TFLOATING_PROFIT_LOSS@db_link_user;

    COUNT(*)
----------
         99254

SQL> select count(* ) from TFLOATING_PROFIT_LOSS_0622@db_link_user;

    COUNT(*)
----------
                24
在B備機目標端可查詢源端的iot表,說明該dblink創建成功。
 
4.目標端創建基於dblink的物化視圖
SQL> grant create materialized view,select any table to kfdata;

SQL >create materialized view TFLOATING_PROFIT_LOSS refresh fast next sysdate + 5/(24*60) as select * from TFLOATING_PROFIT_LOSS@db_link_user;

SQL> create materialized view TFLOATING_PROFIT_LOSS_0622 refresh fast next sysdate + 5/(24*60) as select * from TFLOATING_PROFIT_LOSS_0622@db_link_user;
在源端插入一下數據,目標端查下表,看數據是否可以同步成功,姐妹艱難的熬了好幾分鐘數據也沒過來,仔細一看,算錯了,本想設爲5秒刷一次數據的,一個不小心設成5分鐘刷一次、悲劇了。
SQL> select * from TFLOATING_PROFIT_LOSS_0622;
改物化視圖刷新時間
SQL> alter materialized view TFLOATING_PROFIT_LOSS_0622 refresh fast next sysdate + 5/(3600*24);
改過之後,成功了呢,只是設置5秒大概8、9秒數據纔過來,延遲時間比較長,數據壓力較小用着可行,這東西用着一定要慎重,浪費性能呢。
 
      本以爲這個問題解決之後我就可以順利的上生產系統配置俺們軟件,然後就可以回京了,可是widows的網上交易系統進程一個也起不來了,信號燈都沒有,俺沒辦法真沒辦法了,俺不是做開發的。還好hp的機子還都順利呵。又接了郵件,廣州還有個客戶要去巡檢,之後去東莞做升級,再之後深圳一個測試,一個技術交流,再一個深圳公安測試,本就想廣州結束就回京的,讓其他工程師來,算了,離得近了心更疼,就這麼漂着吧、飄着吧、一個人、。//momoe.
     
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章