【goldengate】官方文檔筆記二 Oracle GoldenGate 處理接口(GGSCI)

Oracle GoldenGate 處理接口(GGSCI)

<爲了簡便,Oracle GoldenGate簡寫爲OGG>

命令行輸入的好處是可控性和便捷性,我們可以根據需要發送最簡指令。二圖形化頁面的好處是易操作,只需要鼠標點點。學期階段還是從命令行入手瞭解更多的細節,等熟練之後再考慮圖形化接口。當然爲了可控性,堅持使用命令行是更好的選擇。

Oracle GoldenGate爲用戶提供了以下操作方式:
  • GGSCI(Oracle GoldenGate 軟件命令接口)
  • 批處理和shell腳本
  • 參數文件
使用GGSCI命令行接口
GGSCI以命令行的方式,配置、控制,和監控OGG。執行GGSCI最好是在安裝OGG的目錄下。例如/u01/app/oracle/goldengate

GGSCI提供了通配符*來簡化我們的操作,*號是IT詞彙中的萬能替代者,在Oracle GoldenGate中也不列外。當我們要啓動多個進程時,可以簡單的輸入
GGSCI > START *

或者我們要選擇啓動多個提取進程,並且名稱中包含字母X的,可以輸入
GGSCI > START EXTRACT *X*

同Linux操作系統一樣,OGG也可以查看之前輸入過的命令,輸入:
GGSCI > HISTORY

如果想重複執行剛剛輸入過的命令可以輸入!,感嘆號。如同sqlplus中輸入/可以再次執行剛剛的那條SQL語句一樣
GGSCI > !

在GGSCI命令行輸入很長的參數後發現錯誤了,可以輸入FC命令進入編輯狀態,調整好該命令重新執行。就像sqlplus中使用預先設定好的ed來修改sql語句一樣。

如果我們需要按照規定的順序輸入一些命令的時候,就像RMAN備份中的run塊結構那樣分配通道,備份數據文件,備份歸檔文件,刪除歸檔文件...順序執行一系列預先編寫好的指令呢?OGG想到了這一點,爲用戶提供了一個叫做OBEY的方式來輸入命令。所謂OBEY,就是將命令行輸入到一個文本文件中,一行輸入一個命令,順序輸入。在GGSCI命令接口調用該文件,就可以完成一系列的操作了。下面給出一個OBEY的示例文件

ADD EXTRACT myext, TRANLOG, BEGIN now
START EXTRACT myext
ADD REPLICAT myrep, EXTTRAIL /ggs/dirdat/aa
START REPLICAT myrep
INFO EXTRACT myext, DETAIL
INFO REPLICAT myrep, DETAIL

該文件要完成添加提取進程myext,添加複製進程myrep,啓動提起進程,啓動複製進程,監控提起進程狀態,監控複製進程狀態一共6個獨立的命令。在OBEY中事先寫好命令,以腳本的方式執行是不是很方便。

在GGSCI中調用OBEY輸入下面的命令
GGSCI > OBEY /dirdat/myObey

使用Oracle GoldenGate參數文件

大多數的OGG功能都是通過配置文件來實現的,配置文件是純文本文件。可以直接使用vi來編輯。瞭解OGG的功能要從配置文件的參數開始。OGG的進程從配置文件中讀取參數。參數文件分爲兩種,一種是全局參數文件,另一種是運行中參數文件。

全局參數
GLOBALS參數文件在ogginstance整個生命週期都有效。該參數爲活動參數,可以在運行狀態中修改,不需要重新啓動。該參數文件適用於所有的OGG實例,但是優先級較低。可以被其它進程的配置參數“覆蓋”,執行自己單獨的配置。就像國家制定的最低工資標準,各個地區會根據經濟條件作出相應的調整。

GLOBALS參數文件不是OGG軟甲所依賴的。使用不適用都可以。如果使用的話,需要注意的是該文件需要在OGG進程啓動之前配置好。

使用GLOBALS配置文件有什麼好處呢?可以看兩個例子

GGSCHEMA oggadmin
CHECKPOINTTABLE oggadmin.checkpointtable

第一參數表示OGG的進程與oracle數據庫交互的那個用戶名。通過該用戶名可以login到數據庫,細節我們以後再說。

第二個參數是在複製端,災備端,或target端,怎麼稱呼都可以,獨有的設置。目的是告訴OGG檢查點的表叫什麼名字。現在只是提一筆,以後再說
這些配置在全局都有效,是共通的,基本上不會改變,適合寫在這裏。

由於是全局配置文件,所以它應當是第一個被創建出來的配置文件。在所有進程都沒創建之初,最先被創建出來的。

創建一個GLOBALS文件很簡單。確保當前目錄爲OGG安裝目錄,然後在命令行接口輸入以下命令
GGSCI > EDIT PARMAS ./GLOBALS

GLOBALS文件創建好後,在編輯狀態可以輸入我們所需的參數。每個命令單獨佔用一行。編輯後退出該文件,在退出GGSCI命令行接口,重新進入GGSCI接口使GLOBALS被當前session所加載。

例如剛纔示例中的GGSCHEMA oggadmin

運行時參數
運行時參數爲你提供了從各個方面來控制OGG同步工作的有力工具,比如:
  • 挑選數據,映射,轉換和複製
  • 挑選DDL和sequence,映射,轉換盒複製
  • 錯誤解析
  • 記錄日誌
  • 狀態報表和錯誤報表
  • 系統資源使用情況
  • 啓動和運行的行爲
下面來看看運行時參數文件的示例,--爲註釋符號

EXTRACT參數文件
-- 提取組名稱
EXTRACT capt
-- 提取進程的數據庫用戶名,和密碼加密方式
USERID ogg, PASSWORD AACAAAAAAAAAAAJAUEUGODSCVGJEEIUGKJDJTFNDKEJFFFTC &
AES128, ENCRYPTKEY securekey1
-- Discard file
DISCARDFILE /ggs/capt.dsc, PURGE
-- 複製端數據庫的通信地址及端口號, 數據加密格式:
RMTHOST sysb, MGRPORT 7809, ENCRYPT AES192 KEYNAME mykey
-- trail 數據的加密方式
ENCRYPTTRAIL AES192 KEYNAME mykey1
-- 複製端trail所在位置
RMTTRAIL /ggs/dirdat/aa
-- 被捕獲的表對象,FIN用戶下所有表和SALES用戶下所有表
TABLE FIN.*;
TABLE SALES.*;



再來看看複製參數文件
-- 複製組名稱
REPLICAT deliv
-- 複製端數據庫用戶id和口令加密方式
USERID ogg, PASSWORD AACAAAAAAAAAAAJAUEUGODSCVGJEEIUGKJDJTFNDKEJFFFTC &
AES128, ENCRYPTKEY securekey1
-- 文件包含生產端(源端)的對象的定義
SOURCEDEFS /ggs/dirdef/defs
-- Discard file
DISCARDFILE /ggs/deliv.dsc, PURGE
-- trail 加密方式
DECRYPTTRAIL AES192 KEYNAME mykey1
-- 錯誤處理規則
REPERROR DEFAULT, ABEND
-- 忽略插入語句操作
IGNOREINSERTS
-- 將生產端映射到複製端
MAP “fin”.“accTAB”, TARGET “fin”.“accTAB”,
COLMAP ("Account" = “Acct”,
"Balance" = “Bal”,
"Branch" = “Branch”);
-- 取得插入(insert)操作
GETINSERTS
-- 生產端映射到複製端,過濾條件爲branch=’NY’
MAP “fin”.”teller”, TARGET “fin”."tellTAB",
WHERE ("Branch" = 'NY');
注意,配置文件中如果有區分大小寫的地方需要加入“”,否則默認情況是不區分大小寫的。

創建一個參數文件
創建一個參數文件可以使用GGSCI命令行接口,也可以使用vi直接編輯參數文件。

下面的語句創建一個Manager參數文件

GGSCI > EDIT PARMAS MGR

下面的語句創建一個提取參數文件

GGSCI > EDIT PARAMS extora

除了使用GGSCI命令接口,也可以使用vi等編輯工具來創建參數文件。文件後綴規定爲.prm。例如mgr.prm,extfin.prm分別爲Manager參數文件和Extract參數文件。


查看已經編輯好的參數文件,可以EDIT PARAMS GMR,也可以使用命令VIEW PARAMS GMR,如果參數文件沒有創建在ogg默認的安裝路徑下,需要制定該文件的絕對路徑。例如
VIEW PARAMS /home/oracle/replp.rmp

更改參數文件
當我們需要修改參數文件時候,要特別注意一點是該進程是不是正在運行。如果正在運行,需要先停止該進程再修改參數,修改完畢再重新啓動該進程。

STOP EXTRACT EX1

EDIT PARMAS EX1
START EXTRACT EX1

對象命名的限制(Non-supported special characters)
關於對象命名的支持,也就是什麼樣的命名可以識別,什麼樣的命名不可以識別。其實我們需要關注的是不支持的內容,也就是不能識別的內容。因爲ogg不是萬能的,它的不支持列表,就是一張傳輸黑名單。在創建對象名稱時一定要避免使用這些字符,否者該對象無法被複制,傳輸。
Character Description
{ }      Begin and end curly brackets (braces)
[ ]      Begin and end brackets
=        Equal symbol + Plus sign
!        Exclamation point
~        Tilde |Pipe &Ampersand : Colon
;        Semi-colon , Comma
‘ ’      Single quotes
“ ”      Double quotes
'        Accent mark (Diacritical mark)
.        Period
<        Less-than symbol
>        Greater-than symbol

在參數文件中輸入傳輸對象還需要注意的方面:
  • 對象名的長度不限(這個不限也是相對的吧?),只要符合支持標準就可以。
  • 如果一個對象名稱沒有schema限制,比如只寫入了一個表名EMP,而不是SCOTT.EMP這種方式,那麼OGG默認登錄的會話的schema。好繞嘴,舉個例子吧。如果登錄的用戶是FIN,那麼OGG默認配置文件中的EMP爲FIN.EMP;登錄用戶是SCOTT,那麼默認配置就是SCOTT.EMP
  • 如果對象名中包含了特殊字符,比如空格等需要使用“”雙引號。
  • 如果對象名是區分大小寫的,需要對schema和對象名分別使用“”雙引號:
正確的: TABLE “Sales”.“ACCOUNT”
錯誤的: TABLE “Sales.ACCOUNT”

對象名也可以配合通配符一起使用
  • ?通配符:該通配符可以表示任何單一的字母。比如一個schema下的表明都是TABn,n是0-9的數字。使用HQ.TAB?,就可以包含從TAB0,TAB1一直到TAB9的所有範圍。
  • *通配符前面提到過了。HQ.*就是代表schemaHQ下所有對象,包括HQ.TOTAL, HQ.T123, and 
  • 在生產端(源端)在映射表的時候可以使用*,?通配符省去很多繁瑣的輸入。
  • 例如:
  • TABLE HQ.*;
  • MAP HQ.T_*;
  • MAP HQ.T_*, TARGET HQ.*;
在TABLE,MAP,SEQUENCE參數在區分大小的數據庫環境中需要注意,SCHEMA.TABLE同SCHEMA.TABLE映射Schema.Table同Schema.Table映射。如果不區分大小寫的,就不需要這麼嚴謹了。
我們可以使用“”雙引號來約束對象名的寫法,強制它爲敏感類型。下面來看一些例子:
下面的結果是相同的:
TABLE *;
TABLE “*”;
使用?通配符也會是相同的結果,因爲?只比配一個字母
TABLE ?;
TABLE “?”;

關於通配符就說這麼多吧,實際上生產環境很少使用這種靈活的配置。都是把對象名寫死在配置文件中,好處是可以隨時註釋掉出問題的對象名,不影響OGG傳輸。
發佈了9 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章