OGG19C学习2-ogg命令行接口

来源:这里教程网 时间:2026-03-03 15:39:42 作者:
主要介绍Oracle GoldenGate用户如何用过GGSCI(Oracle GoldenGate Software Command Interface),批处理和shell脚本以及参数文件向进程提供指令。
1.使用GGSCI和Admin Clinet命令行接口
要进入Admin Client和GGSCI命令行接口,需将当前工作目录更改为Oracle GoldenDate主目录(OGG_HOME)。
GGSCI命令行接口执行文件为:ggsci
Admin Client命令行执行文件为:$OGG_HOME/bin/adminclient
如果没有在主目录进入GGSCI或Admin Client,调用相关命令会出现报错:
[oracle@rhel7.6-12c:/home/oracle]$ggsci
GGSCI (rhel7.6-12c) 1> start mgr
Process creation error: Cannot find executable file './mgr
1.1在命令参数中使用通配符
可以将通配符与某些Oracle GoldenGate命令一起使用,以控制作为一个单元的多个Extract和Replicat组。 Oracle GoldenGate支持的通配符是星号(*)。 星号代表任意数量的字符。 例如,要启动名称中包含字母X的所有Extract组:
START EXTRACT *X*
1.2命令接口的全球化支持
所有命令输入和相关控制台输出都在本地操作系统的默认字符集中呈现。若要指定与本地操作系统的字符集不兼容的字符,则使用Unicode表示法。例如,以下Unicode表示法等效于以Euro符号作为其名称的表的名称:
ADD TRANDATA \u20AC1
1.3使用命令历史记录
使用HISTORY命令显示之前执行过的命令:
GGSCI (rhel7.6-12c) 1> start mgr
Manager started.
GGSCI (rhel7.6-12c) 2> history
GGSCI Command History
    1: start mgr
    2: history

使用!命令执行再次执行上一次的命令:

GGSCI (rhel7.6-12c) 3> info mgr
Manager is running (IP port TCP:rhel7.6-12c.7809, Process ID 22466).
GGSCI (rhel7.6-12c) 4> !
info mgr
Manager is running (IP port TCP:rhel7.6-12c.7809, Process ID 22466).

使用FC命令编辑上一个命令,然后再次执行:

GGSCI (rhel7.6-12c) 11> info mgr
Manager is running (IP port TCP:rhel7.6-12c.7809, Process ID 22466).
GGSCI (rhel7.6-12c) 12> fc stop
GGSCI (rhel7.6-12c) 12> stop mgr
GGSCI (rhel7.6-12c) 12..
Manager process is required by other GGS processes.
Are you sure you want to stop it (y/n)?n

1.4存储和调用常用命令序列

通过使用OBEY文件和OBEY命令,可以自动执行一系列常用命令。遵从文件接受本地操作系统的字符集。若要指定与该字符集不兼容的字符,则使用Unicode表示法。

--01.编辑一个OBEY文件,执行info mgr和stop mgr !的命令
[oracle@rhel7.6-12c:/ggs/app]$vim infomgr
info mgr
stop mgr !
--02.(可选)使用ALLOWNESTED和NOALLOWNESTED命令启用或禁用嵌套的OBEY文件。 嵌套的OBEY文件是包含另一个OBEY文件的文件。
GGSCI (rhel7.6-12c) 1> allownested
Nested OBEY scripts allowed.
--03.调用OBEY文件
GGSCI (rhel7.6-12c) 2> obey infomgr
GGSCI (rhel7.6-12c) 3> info mgr
Manager is running (IP port TCP:rhel7.6-12c.7809, Process ID 22466).
GGSCI (rhel7.6-12c) 4> stop mgr !
Sending STOP request to MANAGER ...
Request processed.
Manager stopped.
2.控制Oracle GoldenGate进程
控制Oracle GoldenGate进程的标准方法是通过GGSCI接口。通常,Oracle GoldenGate进程在生产设置中的第一次启动是在初始同步过程(也称为实例化过程)期间。我们需要在执行维护、升级、故障排除或其他任务所需的不同点停止和启动进程。
2.1控制Manager
/*
启动和停止mgr
{START | STOP [!]} MANAGER
*/
GGSCI (rhel7.6-12c) 1> start mgr
Manager started.
GGSCI (rhel7.6-12c) 2> stop mgr !
Sending STOP request to MANAGER ...
Request processed.
Manager stopped.

2.2控制Extract和Replicat

#启动Extract或Replicat
START {EXTRACT | REPLICAT} group_name
#停止Extract或Replicat
STOP {EXTRACT | REPLICAT} group_name
#强制停止Replicat
#当前事务中止,该进程立即停止。 无法强制停止Extract
STOP REPLICAT group_name !
#Kill掉一个无法停止的进程
#终止进程不会正常关闭它,检查点信息可能会丢失。
KILL {EXTRACT | REPLICAT} group_name
#一次性控制多个进程
command ER wildcard specification
#command:KILL,START,STOP
#wildcard specification:通配符,ogg最多支持100000个通配符条目

2.3删除Extract和Replicat 删除Extract组

#01.以Extract数据库用户(或具有相同权限的用户)的身份发出DBLOGIN命令
#DBLOGIN [SOURCEDB dsn] {USERID user, PASSWORD password [encryption_options] | USERIDALIAS alias [DOMAIN domain]}
GGSCI (rhel7.6-12c) 2> dblogin useridalias sadmin
Successfully logged into database.
#02.停止Extract进程
STOP EXTRACT group_name
#03.删除Extract组
DELETE EXTRACT group_name
#04.(可选)从数据库中注销Extract组
UNREGISTER EXTRACT group_name,database_name

删除Replicat组

#01.停止Replicat进程
STOP REPLICAT group_name
#02.已Replicat数据库用户(或具有相同权限的用户)的身份发出DBLOGIN命令
DBLOGIN [SOURCEDB dsn] {USERID user, PASSWORD password [encryption_options] | USERIDALIAS alias [DOMAIN domain]}
#03.删除Replicat组
DELETE REPLICAT group_name
#删除Replicat组会将检查点保留在检查点表中(如果正在使用)。 删除Replicat组也会保留参数文件。 可以使用相同的参数文件再次创建相同的组,也可以删除参数文件以永久删除该组的配置。

3.自动化命令
Oracle GoldenGate支持通过脚本或作业发布命令。
在UNIX或Linux系统上,或在支持UNIX或Linux应用程序的运行时环境中,可以通过运行GGSCI并调用输入文件从脚本(例如启动脚本,关闭脚本或故障转移脚本)发出Oracle GoldenGate命令。 脚本文件必须以操作系统字符集编码。 Unicode表示法可用于操作系统字符集不支持的字符。
输入一个脚本
ggsci < input_file
#input_file是一个文本文件,称为OBEY文件,包含要执行的命令,按执行的顺序排列。
注意:要从批处理文件中停止Manager进程,请确保添加!。否则,GGSCI会发出需要响应的提示,并使进程进入循环。
3.1通过IBM i CLI调用命令
Oracle GoldenGate for IBM DB2 for i包含一组本机ibmi命令,这些命令允许从ibmi命令行界面(CLI)操作最常见的Oracle GoldenGate程序。因为这些命令是本机的,所以不需要从PASE环境运行它们。通过这种支持,可以交互地发出命令,也可以使用典型的作业提交工具(如SBMJOB)非交互地操作Oracle GoldenGate。
这些命令如下所示,对应于同名的Oracle GoldenGate程序。它们位于Oracle GoldenGate安装库中。
DEFGEN|EXTRACT|KEYGEN|LOGDUMP|MGR|REPLICAT
4.在Oracle GoldenGate输入中指定对象名
在参数文件(如在TABLE和MAP语句中)、列转换函数、命令和其他输入中指定对象名时,适用以下规则。
4.1在Windwos系统的参数文件中指定文件系统路径名
在Windows系统上,如果文件系统路径名中的任何目录的名称以数字开头,则在Oracle GoldenGate输入(如参数文件或命令)中列出该路径时,必须使用正斜杠而不是反斜杠指定该路径。此要求防止Oracle GoldenGate将名称解释为八进制转义序列。例如,以下路径包含一个名为\2014的目录,该目录将被解释为八进制序列\201:
C:\ogg\2014\install\dirdat\aa
C:\ogg\install\2014\dirdat\aa

前面的路径可以与正斜杠一起使用,如下所示:

C:/ogg/2014/install/dirdat/aa
C:/ogg/install/2014/dirdat/aa

4.2支持的数据库对象名
参数文件,命令和其他输入中的对象名称可以是任何长度和任何受支持的字符集。
Oracle GoldenGate支持对象和列名称中的大多数字符。 如果对象名称包含特殊字符(例如空格或符号),请在双引号中指定对象名称。
以下支持和不支持的字符列表涵盖了Oracle GoldenGate支持的所有数据库; 给定的数据库平台可能支持也可能不支持所有列出的字符。
4.2.1支持的特殊字符
Oracle GoldenGate支持数据库支持的所有字符,包括以下特殊字符。 包含这些特殊字符的对象名称必须用参数文件中的双引号引起来。

4.2.2不支持的特殊字符
对象名和非键列名中不支持以下字符:

4.3指定包含/的的名称
如果表名的名称的任何部分都包含一个正斜杠字符(/),则该名称组件必须用双引号引起来,除非对象名来自IBM i平台。 以下是一些示例:
"c/d" 
"/a".b 
a."b/"
4.4限定数据库对象名称
对象名必须在参数文件中完全限定。这意味着每个名称规范都必须是限定的,不仅是作为Oracle GoldenGate参数语法的输入提供的名称,还包括作为SQLEXEC输入提供的SQL过程或查询中的名称、用户出口输入中的名称以及参数文件中提供的所有其他输入。
Oracle GoldenGate支持two-part和three-part的对象名称。
4.4.1Two-part命名
大多数数据库仅需要指定由两部分组成的名称,格式如下:
owner.object
HR.EMP
owner是schema或database,具体取决于数据库如何定义包含数据库对象的逻辑命名空间。object是表或其他受支持的数据库对象。

Oracle GoldenGate支持两部分名称的数据库如下所示,并带有相应的两部分命名约定:

4.4.2Three-part命名
Oracle GoldenGate支持以下数据库的三部分命名:Oracle container databases (CDB)
container.schema.object
PDB1.HR.EMP
4.4.3应用来自多个容器或目录的数据
要将从多个源容器或目录捕获的数据应用于目标Oracle容器数据库,需要同时包含三部分和两部分的名称。在MAP语句的MAP部分中,每个源对象都必须与容器或目录关联,就像在TABLE语句中一样。这使您(和Replicat)能够将数据从多个源容器或目录正确映射到适当的目标对象。但是,在MAP语句的目标部分中,只需要两部分的名称。这是因为Replicat一次只能连接到一个目标容器或目录,schema.owner是一个足够的限定符。需要多个Replicat组才能支持多个目标容器或目录。使用TARGETDB参数指定目标容器或目录。
4.4.4指定一个默认的容器或目录
可以使用SOURCECATALOG参数为参数文件中的任何后续表、映射(或Oracle序列)规范指定默认目录。下面的示例演示如何使用SOURCECATALOG为schema2和schema3对象指定名为pdb2的默认Oracle PDB,为schema4对象指定名为pdb3的默认PDB。pdb1中的对象使用完全限定的三部分名称指定,这不需要指定默认目录。
TABLE pdb1.schema1.table*; 
SOURCECATALOG pdb2 
TABLE schema2.table*; 
TABLE schema3.table*; 
SOURCECATALOG pdb3 
TABLE schema4.table*;
5.指定区分大小写的数据库对象名称
Oracle GoldenGate支持区分大小写的名称。 指定区分大小写的对象时,请遵循以下规则。
  • 在区分大小写的数据库中指定对象名称,该名称用于将它们存储在主机数据库中的情况下。 请记住,在某些数据库类型中,数据库的不同级别可以具有不同的区分大小写的形式,例如区分大小写的schema但不区分大小写的table。 如果数据库要求使用引号来强制区分大小写,请在限定名称中的每个区分大小写的对象周围加上引号。
    正确:TABLE "Sales"."ACCOUNT"
    错误:TABLE "Sales.ACCOUNT"
  • Oracle GoldenGate根据映射需要将不区分大小写的名称转换为存储名称的大小写。

    6.在数据库对象名中使用通配符
    如果特定数据库支持,则可以对完全限定对象名的任何部分使用通配符。这些名称部分可以是以下名称:容器、数据库或目录名称、所有者(架构或数据库名称)以及表或序列名称。
    在适当的情况下,Oracle GoldenGate参数允许使用两种通配符类型在一个语句中指定多个对象:
  • ?替换一个字符。这个通配符不支持DB2 LUW数据库,也不支持DEFGEN。此通配符只能用于它不能用于在TABLE或MAP的TARGET子句中指定目标对象。源对象的TABLE或MAP参数。
  • *表示任意数量的字符(包括zero sequence)。在允许通配符的所有Oracle GoldenGate命令和参数中,此通配符对所有数据库类型都有效。
  • 在TABLE和MAP语句中,只能在源对象名称中组合星号和问号通配符。
    6.1对源对象使用通配符的规则
    对于源对象,可以单独使用星号或使用部分名称。例如,以下源规范有效:
    TABLE HQ.*;
    TABLE PDB*.HQ.*;
    MAP HQ.T_*;
    MAP HQ.T_*, TARGET HQ.*;
    TABLE,MAP和SEQUENCE参数考虑了数据库的大小写敏感性和区域设置,以实现通配符解析。对于创建为区分大小写或不区分大小写的数据库,通配符与确切的名称和大小写匹配。例如,如果数据库区分大小写,则SCHEMA.TABLE与SCHEMA.TABLE、Schema.Table与Schema.Table匹配,依此类推。如果数据库不区分大小写,则匹配不区分大小写。
    对于在同一数据库实例中同时具有区分大小写和不区分大小写对象名的数据库,使用引号强制区分大小写,通配符的工作方式不同。
    单独用于表语句中的源名称时,*通配符与任何字符匹配,无论*是否在引号内。以下语句产生相同的结果:
    TABLE hr.*;
    TABLE hr."*";

    单独使用的?匹配任何单个字符,无论是否在引号内。以下结果相同:

    TABLE hr.?;
    TABLE hr."?";

    如果*或?与其他字符一起使用,则对非通配符应用区分大小写,但通配符同时匹配区分大小写和不区分大小写的名称。
  • 下表语句捕获以小写abc开头的任何表名。将保留引用的名称大小写,并应用区分大小写的匹配。它捕获包含abcA和abca的表名,因为通配符同时匹配区分大小写字符和不区分大小写字符。
    TABLE hr."abc*";
    TABLE hr."abc?";
  • 下表语句捕获以大写字母ABC开头的任何表名,因为部分名称不区分大小写(不带引号),由该数据库存储在大写字母中。但是,由于通配符同时匹配区分大小写和不区分大小写的字符,本例捕获包含ABCA和ABCa的表名。
    TABLE hr.abc*;
    TABLE hr.abc?;
    6.2对目标对象使用通配符的规则
    在MAP语句的TARGET子句中使用通配符时,目标对象必须存在于目标数据库中。(使用DDL复制时例外,这允许在创建新架构及其对象时复制它们。)
    对于目标对象,只能使用*。如果*通配符用于部分名称,则Replicat将通配符替换为相应源对象的整个名称。因此,以下规格不正确:
    TABLE HQ.T_*, TARGET RPT.T_*;
    MAP HQ.T_*, TARGET RPT.T_*;
    #映射会产生错误的结果,因为TARGET规范中的通配符被T_TEST(源对象的名称)替换,从而使整个目标名称变为T_T_TESTn。 下面说明了错误的结果:
    HQ.T_TEST1 maps to RPT.T_T_TEST1
    HQ.T_TEST2 maps to RPT.T_T_TEST2

    以下示例显示了星号通配符的正确使用:

    MAP HQ.T_*, TARGET RPT.*;

    6.3回退名称映射
    在源名称无法映射到目标名称的情况下,Oracle GoldenGate具有回退映射机制。如果在目标上找不到区分大小写的源对象的完全匹配项,则Replicat会尝试将源名称映射到目标上相同的大小写名称(取决于数据库类型)。回退名称映射由NAMEMATCH参数控制。
    6.4 ogg11.1.2之前的试用版中的通配符映射
    如果将Replicat配置为从Oracle GoldenGate 11.2.1之前的版本的跟踪文件中读取,则以以下方式进行目标映射,以提供向后兼容性。
  • 引用的对象名称区分大小写。
  • 未引用的对象名不区分大小写。
    下面将区分大小写的表名"abc"映射到目标"abc"。这种情况只在11.2.1之前的Extract为具有区分大小写配置的SQL Server数据库编写的跟踪时发生。在本例中,如果目标数据库是Oracle数据库或DB2,或者如果目标数据库不包含区分大小写的"abc",但包含表ABC,则执行回退名称映射。
    MAP hq."abc", TARGET hq.*;

    下面的示例将不区分大小写的表名abc映射到目标表名ABC。以前版本的Oracle GoldenGate将不区分大小写的对象名以大写形式存储到trail中;因此目标表名始终是大写的。对于不区分大小写的名称转换,比较是大写的,仅A到Z字符,使用US-ASCII,而不考虑区域设置。

    MAP hq.abc, TARGET hq.*;

  • 相关推荐