【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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章