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,再重新启动就好了。
 

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