Oracle GoldenGate的使用——在Windows源端增加配置管理、抽取、投遞進程並啓動測試

這裏測試ogg的源端與目標端的使用:

1、在源端Oracle創建測試的student數據表

CREATE TABLE "OGG"."student" 
(
    "sid" NUMBER(8,0), 
    "sname" VARCHAR2(14), 
    "sex" VARCHAR2(13), 
    "class" VARCHAR2(13), 
     PRIMARY KEY ("sid")
)

2、源端添加配置管理、抽取與投遞

A.添加studen表附加日誌

首先在源端的OGG安裝目錄打開ggsci.exe,使用以下指令連接數據庫:

dblogin userid ogg password ogg

添加復刻表:

add trandata "OGG"."student"

info trandata "OGG"."student"

注意:這裏應該爲 庫名.表名 的形式編寫,我之前沒有加引號則會報 ERROR: No viable tables matched specification . 錯誤。這個說明沒有找到符合規格的可行表格。解決步驟可以看這篇博客:https://blog.csdn.net/JJBOOM425/article/details/106478060

B.配置extract進程

1、編輯extract進程

GGSCI > edit param extkafka   --具體名稱自己取,便於管理

extkafka.prm文件內容:

extract extkafka
dynamicresolution
SETENV (ORACLE_SID = "orcl")
SETENV (NLS_LANG = "american_america.AL32UTF8")    --此處的編碼問題也是個坑,可能會GBK問題
userid ogg,password ogg
exttrail C:/OGG/dirdat/to
table "OGG"."student";

參數說明:

  • extkafka 爲extract進程名稱;
  • dynamicresolution 爲動態解析;
  • SETENV設置環境變量,這裏分別設置了Oracle數據庫以及字符集;
  • userid ogg,password ogg即OGG連接Oracle數據庫的帳號密碼,這裏使用創建的複製帳號;
  • exttrail定義trail文件的保存位置以及文件名,注意這裏文件名只能是2個字母(即會出現to000000這樣的文件),其餘部分OGG會補齊,此處爲linux環境的話就填linux下的OGG位置,爲windows即填windows位置;
  • table即複製表的表名,支持*通配,必須以;結尾(這裏爲單表的形式進行測試)
     

2、添加extract進程:

GGSCI> add extract extkafka,tranlog,begin now
EXTRACT added.

3、添加trail文件的定義與extract進程綁定:

GGSCI> add exttrail C:/OGG/dirdat/to,extract extkafka

注意:

注意此處的位置依舊是linux環境和windows環境的位置不同,/和\也不同。之前參考別人的部署這裏用的是 \,後面啓動時報錯了:The trail 'C:/OGG/dirdat/to' is not assigned to extract 'EXTKAFKA'. Assign the trail to the extract with the command "ADD EXTTRAIL/RMTTRAIL C:/OGG/dirdat/to, EXTRACT EXTKAFKA".      把\全部換成/就可以啓動成功了。

C.配置pump進程

1、編輯pump進程

pump進程本質上來說也是一個extract,只不過他的作用僅僅是把trail文件傳遞到目標端,配置過程和extract進程類似,只是邏輯上稱之爲pump進程。

GGSCI (ambari.master.com) 18> edit param pukafka

pukafka.prm文件內容:

extract pukafka
passthru
dynamicresolution
userid ogg,password ogg
rmthost 192.168.129.228 mgrport 7809  --目標端的地址和端口
rmttrail /ogg_bigdata/dirdat/to   --目標端的trail文件存儲位置名稱
table "OGG"."student";

參數說明:

  • pukafka 爲extract進程名稱;
  • passthru 即禁止OGG與Oracle交互,我們這裏使用pump邏輯傳輸,故禁止即可;
  • dynamicresolution 爲動態解析;
  • userid ogg,password ogg 即OGG連接Oracle數據庫的帳號密碼;
  • rmthost和mgrhost 即目標端(kafka)OGG的mgr服務的地址以及監聽端口;
  • rmttrail 即目標端trail文件存儲位置以及名稱

2、將本地trail文件和目標端的trail文件綁定到extract進程:

源端路徑:

GGSCI > add extract pukafka,exttrailsource C:\OGG\dirdat\to

注意:這個名詞不能超過8個字符,超過的話則添加時會報錯:ERROR: Invalid group name (must be at most 8 characters) .

目標端路徑:

GGSCI > add rmttrail /ogg_bigdata/dirdat/to,extract pukafka

注意:linux和windows地址寫法

D.配置define文件

Oracle與MySQL,Hadoop集羣(HDFS,Hive,kafka等)等之間數據傳輸可以定義爲異構數據類型的傳輸,故需要定義表之間的關係映射,在OGG命令行執行:

1、編輯define文件

GGSCI > edit param test_ogg

test_ogg配置信息:

defsfile C:\OGG\dirdef\ogg.student
userid ogg,password ogg
table "OGG"."student";


注意:C:\OGG\dirdef\ogg.student中的路徑不能出現"",之前我帶雙引號導致後面生成映射文件失敗。

2、在OGG主目錄下執行命令,生成映射文件:

這裏我是windows環境下,所以需要打開powershell:

然後進入OGG目錄下,執行下面命令:

cd C:\OGG
.\defgen.exe paramfile C:\OGG\dirprm\test_ogg.prm

執行成功後則可以在C:\OGG\dirdef 下看到 ogg.student 文件。此時源端的配置基本都成功了。這個ogg.student文件後面我們會移動到目標端的dirdef文件夾下。

拓展:
A.注意linux和windows下的地址問題。
B.如果是linux下,則在ogg目錄下執行該語句:  ./defgen paramfile dirprm/test_ogg.prm
C.如果Windows中啓動PowerShell時報以下錯誤時:
警告: 無法加載文件
C:\Windows\system32\WindowsPowerShell\v1.0\Modules\PSDiagnostics\PSDiagnostics.psm1,因爲在此係統中禁止執行腳本。有關詳細信息,請參閱 "get-help about_signing"。
警告: 無法加載文件
C:\Windows\system32\WindowsPowerShell\v1.0\Modules\WebAdministration\WebAdministrationAliases.ps1,因爲在此係統中禁止執行腳本。有關詳細信息,請參閱 "get-help about_signing"。

只要執行   set-executionpolicy remotesigned   即可。

映射文件比較

這裏可以看自己定義的表是否真的生成了正確的映射文件:

之前失敗的文件:

*+- Defgen version 2.0, Encoding GBK
*
* Definitions created/modified  2020-06-02 17:32
*
*  Field descriptions for each column entry:
*
*     1    Name
*     2    Data Type
*     3    External Length
*     4    Fetch Offset
*     5    Scale
*     6    Level
*     7    Null
*     8    Bump if Odd
*     9    Internal Length
*    10    Binary Length
*    11    Table Length
*    12    Most Significant DT
*    13    Least Significant DT
*    14    High Precision
*    15    Low Precision
*    16    Elementary Item
*    17    Occurs
*    18    Key Column
*    19    Sub Data Type
*
Database type: ORACLE
Character set ID: UTF-8
National character set ID: UTF-16
Locale: neutral
Case sensitivity: 14 14 14 14 14 14 14 14 14 14 14 14 11 14 14 14

後面修改後,獲取的正確的表結構:

*+- Defgen version 2.0, Encoding GBK
*
* Definitions created/modified  2020-06-12 20:15
*
*  Field descriptions for each column entry:
*
*     1    Name
*     2    Data Type
*     3    External Length
*     4    Fetch Offset
*     5    Scale
*     6    Level
*     7    Null
*     8    Bump if Odd
*     9    Internal Length
*    10    Binary Length
*    11    Table Length
*    12    Most Significant DT
*    13    Least Significant DT
*    14    High Precision
*    15    Low Precision
*    16    Elementary Item
*    17    Occurs
*    18    Key Column
*    19    Sub Data Type
*
Database type: ORACLE
Character set ID: UTF-8
National character set ID: UTF-16
Locale: neutral
Case sensitivity: 14 14 14 14 14 14 14 14 14 14 14 14 11 14 14 14
*
Definition for table OGG.student
Record length: 76
Syskey: 0
Columns: 4
sid    134      9        0  0  0 1 0      8      8      8 0 0 0 0 1    0 1 3
sname   64     14       12  0  0 1 0     14     14      0 0 0 0 0 1    0 0 0
sex     64     13       32  0  0 1 0     13     13      0 0 0 0 0 1    0 0 0
class   64     20       50  0  0 1 0     20     20      0 0 0 0 0 1    0 0 0
End of definition

還是很明顯可以看到不同。

3、測試創建的進程

啓動所有部署的進程,使用以下指令在源端的ggsci中啓動進程:

start mgr
start extkafka
start pukafka

啓動後,如果不閃退則成功啓動,如果有閃退則可以看看ogg目錄下的 ggserr.log 日誌信息:

成功啓動後可以在源端(C:/OGG/dirdat)與目標端(/ogg_bigdata/dirdat)下看到to000000的文件。

源端:

目標端:

拓展:
如果源端關閉了那些進程,重新啓動則可能會報錯。我就重新配置一下extkafka與pukafka,再重新啓動就好了。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章