【goldengate】官方文件筆記二 Oracle GoldenGate 處理介面(GGSCI)

shilei1發表於2018-01-23
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傳輸。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/196700/viewspace-2150444/,如需轉載,請註明出處,否則將追究法律責任。

相關文章