Oracle GoldenGate: 使用宏

來源:互聯網
上載者:User

標籤:io   ar   使用   sp   for   檔案   on   div   cti   

     OGG宏與C語言中的宏一樣,提供了函數封裝的功能,即可以將一些配置參數整理為一個宏,然後在多個參數檔案中共用,針對環境複雜或多個複製點的情況尤其有用。下面我們將介紹如何建立一個宏的庫,以及在OGG參數檔案中如何使用建立的這個宏 library.
一個宏函數庫是宏的集合,宏可以是一個庫檔案中包含多個宏的定義,或多個庫檔案,包括不同的宏定義。建議將庫檔案存放在OGG的dirmac目錄下,同時,庫檔案使用.mac為尾碼。這樣可以在引用時方便的識別。

下面是一個宏的樣本,所有內容存放在一個庫檔案中:“$OGG_BASE/dirmac/macrolib.mac”.

MACRO #dbconnect
BEGIN
userid gguser, password AACAAAAAAAAAAAHAAIFBOIYAMCGIMARE, encryptkey default
END;

MACRO #bpsettings
BEGIN
STATOPTIONS RESETREPORTSTATS

-- Generate a report every day at 1 minute after midnight.
-- This report will contain the number of operations, by operation
-- type, performed on each table.
REPORT AT 00:01

REPORTROLLOVER AT 00:01
REPORTCOUNT EVERY 60 SECONDS, RATE

-- End of "best practices" section
END;

MACRO #funcsmap
PARAMS (#src_table, #target_table)
BEGIN
   MAP #src_table, TARGET #target_table,
    colmap (usedefaults,
            orders_trans_ts = @GETENV ("GGHEADER", "COMMITTIMESTAMP"),
            trans_rec_loc8tr = @STRCAT (@GETENV ("RECORD", "FILESEQNO"),
                                        @GETENV ("RECORD", "FILERBA")),
            extract_lag_ms = @TOKEN ("TKN-EXTLAG-MSEC"),
            replicat_lag_ms = @GETENV ("LAG", "MSEC"),
            src_db_name = @TOKEN ("TKN-SRC-DBNAME"),
            src_db_version = @TOKEN ("TKN-SRC-DBVERSION"),
            src_txn_csn = @TOKEN ("TKN-TXN-CSN")
     );
END;

所有的宏使用關鍵“Macro”關鍵字開始定義,後面是宏的名稱,以“#name”定義,宏的內容由“begin...end;”關鍵字包含,上面的三個宏定義分別是#dbconnect, #bpsettings, 和#funcsmap。其中
#dbconnect宏定義了一個DB串連的語句,使用預設的key進行密碼加密;
#bpsettings宏定義了OGG中配置時的一些最佳建議,比如按天或按小時報告複製情況;
#funcsmap宏定義了一個map映射,要注意的是它要求帶兩個參數來使用;

下面是該宏在一個replicat端的使用:

nolist
include ./dirmac/macrolib.mac
list

replicat rfuncb
#dbconnect ()
#bpsettings ()
sourcedefs ./dirdef/mydefs.defs
discardfile ./dirrpt/rfuncb.dsc, purge
#funcsmap (amer.orders, euro.funcs_test)

當rfuncb投遞進程啟動時,include語句將載入庫檔案:./dirmac/macrolib.mac。參數nolist的意思是告訴投遞進程不要把後面的執行情況寫入到記錄檔中,而list參數則是要求後續的執行語句都要寫日誌。
如果本參數檔案中沒有list語句,則整個投遞進程將不會有任何日誌輸出到檔案中。
當投遞進程讀取這個replicat參數檔案時,它會將引用的宏替換為庫檔案中的語句定義,因此“#dbconnect ()”,“#bpsettings ()” 和 “#funcsmap (amer.orders, euro.funcs_test)”都會被替換為相應的語句。

“#funcsmap”宏使用了兩個參數,分別代表源表和目標表。PARAMS關鍵字是告訴使用人員,這個宏需要有參數才能運行。針對參數的使用,有以下幾點注意事項:

  • 參數名不區分大小寫;
  • 參數名中不能使用引號;
  • 參數在宏定義中不是必須的;
  • 一個宏最多可以有99個參數,所有參數的長度不能超過9999位元組;
  • 所有參數都必須在PARAMS語句中定義,當調用宏時,所有參數都必須賦值。


小結
OGG宏在靈活運用和配置OGG參數時是個不錯的技巧,特別是針對多個設定檔和複雜環境時,可以在一個檔案中定義常用的一組操作,然後在所有環境中使用,降低營運的複雜性。

Oracle GoldenGate: 使用宏

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.