第四章
Oracle GoldenGate 进程接口入门
Oracle GoldenGate用户通过以下方式提供进程说明:
●GGSCI(Oracle GoldenGate软件命令界面)
●批处理和外壳脚本
●参数文件
使用GGSCI命令行界面
GGSCI是Oracle GoldenGate命令行界面。 您可以使用GGSCI发出配置,控制和监视Oracle GoldenGate的完整命令。
To start GGSCI 启动ggsci
1.将目录更改为安装了Oracle GoldenGate的目录。
2.运行ggsci可执行文件。
有关Oracle GoldenGate命令的更多信息,请参见《 Oracle GoldenGate Windows和UNIX参考指南》。
对命令接口的全球化支持
所有命令输入和相关控制台输出均以本地操作系统的默认字符集呈现。 若要指定与本地操作系统的字符集不兼容的字符,请使用UNICODE表示法。 例如,给定一个以欧元符号作为名称的表,以下命令是等效的:
ADD TRANDATA €1
ADD TRANDATA \u20AC1
需要更多信息,请参阅第143页“对特定字符使用转义序列”。
注意 Oracle GoldenGate组名称不区分大小写。
在命令参数中使用通配符
您可以将通配符与某些Oracle GoldenGate命令一起使用,以一个单元来控制多个“提取”和“复制”组。 Oracle GoldenGate支持的通配符是星号(*)。 星号代表任意数量的字符。
例如,要启动名称包含字母X的所有抽取组,请发出以下命令
START EXTRACT *X*
使用命令历史
使用以下工具,可以更轻松地执行多个命令:
●使用HISTORY命令显示以前执行的命令的列表。
●使用! 命令以再次执行前一个命令而不需要编辑它。
●使用FC命令编辑上一个命令,然后再次执行它。
存储常用命令序列
您可以使用OBEY文件和OBEY命令来自动执行一系列常用命令。 OBEY文件采用本地操作系统的字符集。 指定一个
与该字符集不兼容的字符,请使用UNICODE表示法。 需要更多信息,请参阅第143页“对特定字符使用转义序列”。
使用OBEY
1.创建并保存一个包含命令的文本文件,每行一个命令。 这是您的OBEY文件。 命名为您想要的。 您可以将其他OBEY文件嵌套在OBEY文件中。
2.运行GGSCI。
3.(可选)如果使用包含嵌套OBEY文件的OBEY文件,请发出以下命令。 此命令允许在GGSCI当前会话中使用嵌套的OBEY文件,并且在使用嵌套的OBEY文件时需要使用此命令。
ALLOWNESTED
4.在GGSCI中,使用以下语法调用OBEY文件。
OBEY
其中:
图3展示了与OBEY命令一起使用的OBEY命令文件。 它创建并启动“抽取和复制”组并检索处理信息。
Figure 3 OBEY command file
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
使用UNIX批处理和Shell脚本
在UNIX系统上,您可以通过运行GGSCI并调用输入文件,从启动脚本,关闭脚本或故障转移脚本之类的脚本中发出Oracle GoldenGate命令。 脚本文件必须以操作系统字符集编码。 UNICODE符号可用于操作系统字符集不支持的字符。 在创建脚本之前,请参阅第25页“命令界面的全球化支持”
输入脚本
从操作系统的命令行使用以下语法。
ggsci <
其中:
注意 要从批处理文件中停止Manager进程,请确保添加!参数在 STOP MANAGER命令末尾。 否则,GGSCI会发出提示,要求进行响应并导致处理进入循环
使用Oracle GoldenGate参数文件
大多数Oracle GoldenGate功能都是通过参数文件中指定的参数来控制的。 参数文件是由关联的Oracle GoldenGate进程读取的纯文本文件。Oracle GoldenGate使用两种类型的参数文件:GLOBALS文件和正在运行参数文件。
全球化对参数文件的支持
Oracle GoldenGate以本地操作系统的默认字符集创建参数文件。 如果本地平台不支持必需的字符集作为操作系统中的默认字符集,则可以全局或按进程使用CHARSET参数来为参数文件指定字符集
为避免字符集不兼容引起的问题,请在将运行关联进程的服务器上创建或编辑参数文件。 避免在一个系统(例如Windows笔记本电脑)上创建文件,然后将文件传输到安装了Oracle GoldenGate且操作系统字符集不同的UNIX服务器。
如果必须在其他系统上创建参数文件,则Oracle GoldenGate提供了一些工具来帮助解决字符集不兼容问题:
●可以使用CHARSET参数为参数文件指定兼容的字符集。 此参数必须放在参数文件的第一行,并允许您以指定的字符集写入文件。将文件传输到另一个系统后,请勿在该系统上编辑文件。
●您可以使用UNICODE符号指定与将使用该文件的操作系统的字符集不兼容的字符。请参阅第143页“对特定字符使用转义序列”。
有关此参数的更多信息,请参见《 Oracle GoldenGate Windows和UNIX参考指南》。
GLOBALS 文件概述
GLOBALS文件存储与整个Oracle GoldenGate实例相关的参数。 这与运行时参数形成鲜明对比,运行时参数与特定的进程(例如抽取)结合在一起。 GLOBALS文件中的参数适用于Oracle GoldenGate实例中的所有进程,但可以被特定的进程参数覆盖。Oracle GoldenGate环境可能需要或可能不需要GLOBALS参数文件
使用时,GLOBALS文件必须存在,然后才能启动任何Oracle GoldenGate进程,包括GGSCI。 GGSCI程序读取GLOBALS文件,并将参数传递给需要它们的进程。
创建GLOBALS文件
1.从Oracle GoldenGate安装位置,运行GGSCI并输入以下命令,或在文本编辑器中打开文件。
EDIT PARAMS ./GLOBALS
注意 必须使用此命令的./部分,因为GLOBALS文件必须位于Oracle GoldenGate安装文件的根目录下。
2.在文件中,输入GLOBALS参数,每行输入一个。
3.保存文件。 如果您使用了文本编辑器,请在Oracle GoldenGate安装目录的根目录下将文件另存为GLOBALS(大写,没有文件扩展名)。如果您在GGSCI中正确创建了文件,该文件将自动以这种方式保存。 不要移动此文件。
4.退出GGSCI。 您必须在发出命令或启动引用GLOBALS文件的进程之前从新的GGSCI会话开始。
运行时参数概述
运行时参数使您可以控制Oracle GoldenGate同步的各个方面,例如:
● Data selection, mapping, transformation, and replication --数据选择,映射,转换和复制
● DDL and sequence selection, mapping, and replication (where supported) DDL和序列选择,映射和复制(如果支 持)
● Error resolution 错误解决
● Logging 登录
● Status and error reporting 状态和错误报告
● System resource usage 系统资源使用
● Startup and runtime behavior 启动和运行时的行为
Manager进程或Extract或Replicate组只能有一个活动参数文件。 但是,可以通过使用OBEY参数在其他文件中使用参数。 请参阅第33页“简化参数文件的创建”。参数有两种类型:全局(不要与GLOBALS参数混淆)和特定于对象的:
●全局参数适用于参数文件中指定的所有数据库对象。
一些全局参数影响进程行为,而其他一些全局参数则影响诸如内存利用率等。 图4和图5中的USERID是全局参数的示例。 在大多数情况下,全局参数可以出现在文件中指定数据库对象的参数之前的任何位置,例如图4和图5中的TABLE和MAP语句。全局参数在文件中仅应列出一次。 如果列出多次以上,则仅最后一个实例处于活动状态,而所有其他实例均被忽略。
●特定于对象的参数使您可以对不同组的数据库对象应用不同的处理规则。 图5中的GETINSERTS和IGNOREINSERTS是特定于对象的参数的示例。 每个命令都在MAP语句之前,该MAP语句指定要受影响的对象。 特定于对象的参数以文件中列出每个参数的顺序生效。
以下是用于抽取和复制的基本参数文件的示例。 注释前面带有双连字符
图4 抽取参数文件示例
-- Extract group name
EXTRACT capt
-- Extract database user login, with password encryption specifications
USERID ogg, PASSWORD AACAAAAAAAAAAAJAUEUGODSCVGJEEIUGKJDJTFNDKEJFFFTC &
AES128, ENCRYPTKEY securekey1
-- Discard file
DISCARDFILE /ggs/capt.dsc, PURGE
-- Remote host to where captured data is sent in encrypted format:
RMTHOST sysb, MGRPORT 7809, ENCRYPT AES192 KEYNAME mykey
-- Encryption specification for trail data
ENCRYPTTRAIL AES192 KEYNAME mykey1
-- Remote trail on the remote host
RMTTRAIL /ggs/dirdat/aa
-- TABLE statements that identify data to capture.
TABLE FIN.*;
TABLE SALES.*;
前面的示例反映了一个不区分大小写的Oracle数据库,其中对象名称在TABLE语句中以大写字母指定。 对于不区分大小写的Oracle数据库,名称在参数文件中的输入方式(大写,小写,大小写混合)没有区别。 对于其他数据库,对象名称的大小写可能很重要。 有关更多信息,请参见第37页“在Oracle GoldenGate输入中指定对象名称”。
图5 复制进程参数文件示例
-- Replicat group name
REPLICAT deliv
-- Replicat database user login, with password encryption specifications
USERID ogg, PASSWORD AACAAAAAAAAAAAJAUEUGODSCVGJEEIUGKJDJTFNDKEJFFFTC &
AES128, ENCRYPTKEY securekey1
-- File containing definitions of source objects
SOURCEDEFS /ggs/dirdef/defs
-- Discard file
DISCARDFILE /ggs/deliv.dsc, PURGE
-- Decryption specification for encrypted trail
DECRYPTTRAIL AES192 KEYNAME mykey1
-- Error handling rules
REPERROR DEFAULT, ABEND
-- Ignore INSERT operations
IGNOREINSERTS
-- MAP statement to map source objects to target objects and
-- specify column mapping
MAP “fin”.“accTAB”, TARGET “fin”.“accTAB”,
COLMAP ("Account" = “Acct”,
"Balance" = “Bal”,
"Branch" = “Branch”);
-- Get INSERT operations
GETINSERTS
-- MAP statement to map source objects to target objects and
-- filter to apply only the ‘NY’ branch data.
MAP “fin”.”teller”, TARGET “fin”."tellTAB",
WHERE ("Branch" = 'NY');
请注意,在图5的“复制”示例中使用了单引号和双引号。对于需要引号来强制区分大小写的对象名的数据库,例如Oracle,您还必须在参数文件中的双引号中包含区分大小写的对象名称。 请注意,要在双引号中指定区分大小写的列名称,必须使用GLOBALS文件中的USEANSISQLQUOTES参数; 否则,双引号中的字符串将被解释为文字。 有关指定名称和文字的更多信息,请参见第37页,“在Oracle GoldenGate输入中指定对象名称”。
创建参数文件
要创建参数文件,请使用GGSCI用户界面中的EDIT PARAMS命令(推荐)或直接使用文本编辑器。 使用GGSCI时,使用的是标准文本编辑器,但参数文件会自动以正确的文件名和正确的目录保存。
仅当以操作系统的字符集编写参数文件时才使用GGSCI(不使用CHARSET参数)。 否则,请在GGSCI外部使用文本编辑器。有关CHARSET的更多信息,请参见《 Oracle GoldenGate Windows和UNIX参考指南》。
EDIT PARAMS命令在GGSCI界面中启动以下文本编辑器:
●Microsoft Windows系统上的记事本
●UNIX和Linux系统上的vi编辑器
注意您可以使用SET EDITOR命令通过GGSCI界面更改默认编辑器。
在GGSCI中创建参数文件
1.从安装Oracle GoldenGate的目录中,运行GGSCI。
2.在GGSCI中,发出以下命令以打开默认的文本编辑器。
EDIT PARAMS
其中:
以下内容为名为extora的Extract组创建或编辑参数文件。
EDIT PARAMS extora
以下内容为Manager进程创建或编辑参数文件。
EDIT PARAMS MGR
3.使用编辑器的编辑功能,输入要描述此文件的尽可能多的注释行,并确保每个注释行前面都有两个连字符(--).
4.在非注释行上,输入Oracle GoldenGate参数,为每个参数语句开始一个新行。
Oracle GoldenGate参数具有以下语法
❍其中:
❍
USERID ogg, PASSWORD &
AACAAAAAAAAAAAJAUEUGODSCVGJEEIUGKJDJTFNDKEJFFFTC &
AES128 KEYNAME mykey1
RMTHOST sysb, MGRPORT 8040, ENCRYPT AES192 KEYNAME mykey
ENCRYPTTRAIL AES 192 KEYNAME mykey2
RMTTRAIL /home/ggs/dirdat/c1, PURGE
❍[,
❍a [&]在多行参数语句的每行末尾都需要,如上例中的USERID参数语句所示。 以下是例外,它们可以接受但不要求与号,因为它们以分号结尾:
MAP
TABLE
SEQUENCE
5.保存并关闭文件
使用文本编辑器创建参数文件
您可以使用文本编辑器在GGSCI外部创建参数文件,但要确保:
●用拥有参数的提取或复制组的名称保存该参数文件,如果Manager进程拥有它,则将其保存为名称“ mgr”。 使用.prm文件扩展名。例如:extfin.prm和mgr.prm。
●将参数文件保存在Oracle GoldenGate安装目录的dirprm目录中。 另请参见“存储参数文件”。
存储参数文件
在GGSCI中使用EDIT PARAMS创建参数文件时,该参数文件将保存到Oracle GoldenGate目录的dirprm子目录中。 您可以通过指定完整路径名在dirprm以外的目录中创建参数文件,但还必须指定完整路径
创建进程组时,请使用ADD EXTRACT或ADD REPLICAT命令的PARAMS选项来命名。 与抽取或复制组配对后,参数文件必须处理开始后,请保留在原始位置,以便Oracle GoldenGate正常运行
验证参数文件
您可以检查“抽取”或“复制”参数文件中参数的语法,以确保准确性。 此功能不适用于其他Oracle GoldenGate进程。
验证参数语法
1.在参数文件中包括CHECKPARAMS参数。
2.通过在GGSCI中发出START EXTRACT或START REPLICAT命令来启动相关过程。
START {EXTRACT | REPLICAT}
Oracle GoldenGate审核语法并将结果写到报告文件或屏幕中。 然后该过程停止。 有关报告文件的更多信息,请参见第17章。
3.执行以下任一操作:
❍如果语法正确,请在开始处理数据之前,删除CHECKPARAMS参数。
❍如果语法错误,请根据报告中的发现进行更正。 如果需要,您可以运行另一个测试以验证更改。 在开始处理数据之前,请删除CHECKPARAMS。
查看参数文件
您可以直接从操作系统的shell命令查看参数文件,也可以从GGSCI用户界面查看它。 要从GGSCI查看文件,请使用VIEW PARAMS命令。
VIEW PARAMS
其中:
警告请勿使用VIEW PARAMS查看不是本地操作系统字符集中的现有参数文件(例如,使用CHARSET选项指定其他字符集的参数文件)。 内容可能已损坏。 从GGSCI外部查看参数文件。
如果参数文件是在Oracle GoldenGate目录的dirprm子目录之外的其他位置创建的,请指定完整路径名,如以下示例所示。
VIEW PARAMS c:\lpparms\replp.prm
更改参数文件
必须先停止Oracle GoldenGate进程,然后再编辑参数文件,然后在保存参数文件后再次启动。 在进程运行时更改参数设置可能会带来不可预测的不利后果,尤其是在添加表或更改映射或过滤规则时。
警告 请勿使用EDIT PARAMS命令来查看或编辑字符集而不是本地操作系统(例如,使用CHARSET选项指定其他字符集的字符集)中的字符集的现有参数文件。 内容可能已损坏。 从GGSCI外部查看参数文件
更改参数
1.除非要在Windows群集中停止Manager,否则请在GGSCI中使用以下命令停止该过程;否则,请执行以下步骤。 在这种情况下,必须使用群集管理器停止Manager。
STOP {EXTRACT | REPLICAT | MANAGER}
2.通过使用文本编辑器或GGSCI中的EDIT PARAMS命令打开参数文件。
EDIT PARAMS mgr
3.进行编辑,然后保存文件。
4.启动该过程(如果在Windows群集中启动Manager,则使用群集管理器)。
START {EXTRACT | REPLICAT | MANAGER}
简化参数文件的创建
Oracle GoldenGate提供的工具可减少必须指定参数的次数
● Wildcards 通配符
● The OBEY parameter
● Macros
● Parameter substitution
使用通配符
对于接受对象名称的参数,可以使用星号(*)和问号(?)通配符。 通配符的使用减少了在给定架构中指定大量对象名称或所有对象的工作。 有关更多信息,请参见“在对象中使用通配符”。
名称”(第39页)。
使用OBEY
您可以创建一个文本文件库,其中包含常用的参数设置,并且
那么您可以通过OBEY参数从活动参数文件中调用任何这些文件。 OBEY的语法为:
OBEY <文件名>
其中:< file name>是文件的相对或完整路径名。
在活动参数文件中遇到OBEY参数时,Oracle GoldenGate处理引用文件中的参数,然后返回活动文件以处理所有剩余参数。 GLOBALS参数文件不支持OBEY。
如果在包含OBEY参数的参数文件中使用CHARSET参数,则引用的参数文件不会继承CHARSET字符集。 CHARSET字符集非常适合读取参考文件中的通配符名称,但是对于参考文件中的所有其他多字节规范,必须使用转义序列(\ uXXXX)。 有关CHARSET的更多信息,请参见《 Oracle GoldenGate Windows和UNIX参考指南》。
使用宏
您可以使用宏来自动化参数语句的多次使用。 有关更多信息,请参阅第231页,“使用Oracle GoldenGate宏来简化和自动化工作”。
使用参数替换
您可以使用参数替换在运行时自动为Oracle GoldenGate参数分配值,而不是在创建参数文件时分配静态值。 这样,如果值在运行之间变化,则可以避免编辑参数文件或维护具有不同设置的多个文件。 您可以在运行时简单地导出所需的值。 参数替换可用于任何Oracle GoldenGate进程。
使用参数替换
1。对于要进行替换的每个参数,声明一个运行时参数而不是一个值,在运行时参数名称前面加上问号(?)作为
如下例所示。
SOURCEISFILE
EXTFILE ?EXTFILE
MAP ?TABNAME, TARGET ACCOUNT_TARG;
2.在启动Oracle GoldenGate进程之前,使用操作系统的shell程序通过环境变量传递运行时值,如图6和图7所示。
图 6 Windows上的参数替换
C:\GGS> set EXTFILE=C:\ggs\extfile
C:\GGS> set TABNAME=PROD.ACCOUNTS
C:\GGS> replicat paramfile c:\ggs\dirprm\parmfl
图 7 UNIX (Korn shell)上的参数替换
$ EXTFILE=/ggs/extfile
$ export EXTFILE
$ TABNAME=PROD.ACCOUNTS
$ export TABNAME
$ replicat paramfile ggs/dirprm/parmfl
UNIX区分大小写,因此参数文件中的参数声明必须与shell变量分配的大小写相同。
获取有关Oracle GoldenGate参数的信息
有关Oracle GoldenGate参数的更多信息,请参见《 Oracle GoldenGate Windows和UNIX参考指南》。
对象名称中支持的字符
Oracle GoldenGate支持对象和列名称中的大多数字符。 以下支持和不支持的字符列表涵盖了Oracle GoldenGate支持的所有数据库; 给定的数据库平台可能支持也可能不支持所有列出的字符。
支持的特殊字符
Oracle GoldenGate支持数据库支持的所有字符,包括以下特殊字符。 包含这些特殊字符的对象名称必须用参数文件中的双引号引起来。
不支持的特殊字符
对象名称和非键列名称不支持以下字符。
在Oracle GoldenGate输入中指定对象名称
在参数文件(例如TABLE和MAP语句),列转换函数,命令和其他输入中指定数据库对象名称时,请遵循以下规则。
●对象名称可以是任何长度,并且可以是任何受支持的字符集。 有关支持的字符,请参见第35页的“对象名称中的支持的字符”。有关支持的字符集,请参见第285页的“支持的字符集”。
●如果对象名称在参数文件中不完全限定(例如仅列出表名称为EMP),则Oracle GoldenGate使用登录会话的默认schema名称。例如,如果FIN是当前登录会话的默认schema。 ,则使用FIN.EMP。
●如果对象名称包含特殊字符(例如空格或符号),请在双引号中指定对象名称
●在区分大小写的数据库中指定对象名称,该对象名称用于将其存储在主机数据库中。 请记住,在某些数据库类型中,不同级别的数据库可能具有不同的大小写敏感性,例如区分大小写模式,但不区分大小写的表。 如果数据库要求使用引号来强制区分大小写,请在限定名称中的每个区分大小写的对象周围加上引号。
正确:table“ Sales”。“ ACCOUNT”
错误的:table“ Sales.ACCOUNT”
●Oracle GoldenGate在需要进行映射时将不区分大小写的名称转换为存储时的大小写形式。
下表概述了每个受支持数据库对对象名称中区分大小写的支持。 有关此类支持的详细信息,请参考数据库文档。
注意 对于所有受支持的数据库,无论关联的对象名是带引号还是不带引号,始终将密码区分大小写。
表2 每个数据库对象名称的区分大小写
在对象名称中使用通配符
您可以将通配符用于表和序列名称。 请勿将通配符用作所有者名称(例如schema)。 在适当的情况下,Oracle GoldenGate参数允许使用两种通配符类型在一个语句中指定多个对象:
●问号(?)替换一个字符。 例如,在包含名为TAB n的表的模式中,其中n为0到9,HQ.TAB?的通配符规范将返回HQ.TAB0,HQ.TAB1,HQ.TAB2,依此类推,直到HQ.TAB9,但没有其他值。 此通配符不支持DEFGEN。
●星号(*)表示任意数量的字符(包括零序)。 例如,HQ.T *的规范可以返回诸如HQ.TOTAL,HQ.T123和HQ.T之类的对象
●在TABLE和MAP语句中,可以在源对象名称中组合星号和问号通配符。
对源对象使用通配符的规则
对于源对象,您可以单独使用星号,也可以使用部分名称。 例如,以下源规范有效:
● 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 ?;
TABLE "?";
如果将问号或星号通配符与其他字符一起使用,则将区分大小写应用于非通配符,但是通配符会同时区分大小写和不区分大小写的名称。
●以下TABLE语句捕获以小写“ abc”开头的任何表名。 引用的名称大小写将保留,并且区分大小写。
因为通配符匹配区分大小写和不区分大小写的字符,所以它将捕获包含“ abcA”和“ abca”的表名。
table“ abc *”;
table“ abc?”;
对目标对象使用通配符的规则
在MAP语句的TARGET子句中使用通配符时,目标对象必须存在于目标数据库中(除非DDL复制受支持并正在使用。这允许新对象schemas及其创建时要复制的对象。)对于目标对象,只能使用星号。 如果将星号通配符与部分名称一起使用,则Replicat会将通配符替换为相应源对象的整个名称。 因此,以下规格不正确:
TABLE HQ.T_*, TARGET RPT.T_*;
MAP HQ.T_*, TARGET RPT.T_*;
由于将目标规范中的通配符替换为T_TEST(源对象的名称),从而使整个目标名称成为T_T_TEST
● HQ.T_TEST1 maps to RPT.T_T_TEST1
● HQ.T_TEST2 maps to RPT.T_T_TEST2
(依此类推)
以下示例显示了星号通配符的正确用法。
MAP HQ.T _ *,TARGET RPT.*;
这样可以得到以下正确的结果:
●HQ.T_TEST1 maps to RPT.T_TEST1
●HQ.T_TEST2 maps to RPT.T_TEST2
(依此类推)
后备名称映射
如果无法将源名称映射到目标名称,则Oracle GoldenGate具有后备映射机制。 如果在区分大小写的源对象的目标上找不到完全匹配的内容,则Replicat会尝试将源名称映射为相同的名称。目标上的大写或小写(取决于数据库类型)。 有关更多信息,请参见《 Oracle GoldenGate Windows和UNIX参考指南》中的NAMEMATCHIGNORECASE参数。
11.1.2之前版本的通配符映射
如果将Replicated配置为从Oracle GoldenGate 11.2.1之前的版本的队列文件中读取,则将以以下方式进行目标映射以提供向后兼容性。
●引用的对象名称区分大小写。
●未引用的对象名称不区分大小写。
下面将区分大小写的表名“ abc”映射到目标“ abc”。 仅对于11.2.1之前的摘录针对具有区分大小写配置的SQL Server数据库和Sybase编写的队列记录会发生这种情况。 请注意,在此示例中,如果目标数据库是Oracle,DB2或SQL / MX,则当目标数据库不包含区分大小写的“ abc”但具有表ABC时,将执行后备名称映射。 (请参阅“ Fallback名称映射”。)
MAP“ abc”,TARGET *;
下面的示例将不区分大小写的表名abc映射到目标表名ABC。以前的Oracle GoldenGate版本将不区分大小写的对象名以大写形式存储在路径中; 因此,目标表名称始终为大写。 对于不区分大小写的名称转换,该比较仅以大写形式(US ASCII中的A到Z字符)进行,而不考虑区域设置。
MAP abc,TARGET *;
星号或问号作为对象名称中的文字
如果对象本身的名称包含星号或问号,则必须对整个名称进行转义并将其放在双引号中,如以下示例所示:
TABLE HT.“\?ABC”;
通配符如何解决
默认情况下,当对象名是通配符时,该对象的解析将在处理源对象的第一行时发生。 (相反,当明确声明对象的名称时,其解析在进程启动时发生。)要更改解析通配符的规则,请使用WILDCARDRESOLVE参数。 默认为DYNAMIC
从通配符规范中排除对象
通过使用TABLEEXCLUDE和MAPEXCLUDE参数,可以将通配符对象选择与显式对象排除结合使用。
对参数文件中的名称和文字应用SQL-92规则
在Oracle GoldenGate参数文件,转换函数,用户出口和命令中,双引号中包含的字符默认情况下被视为字符串文字。 默认情况下,不识别带引号的列名的区分大小写(对于需要用引号强制实现区分大小写的数据库,例如Oracle)。 例如,以下正确,其中PRODUCT_CODE是列名,其他字符串是文字。
@CASE(PRODUCT_CODE,“ CAR”,“ A car”,“ TRUCK”,“ A truck”)
要在双引号中支持区分大小写的对象名称,请在GLOBALS参数文件中使用USEANSISQLQUOTES参数。 此参数适用SQL-92规则。使用USEANSISQLQUOTES时,可以在双引号中指定列名称,并且必须在单引号中指定文字字符串。 在下面的示例中,Product_Code是Oracle数据库中区分大小写的列名,其他字符串是文字。
@CASE ("Product_Code", ’CAR’, ’A car’, ’TRUCK’, ’A truck’)
有关USEANSISQLQUOTES的更多信息,请参见《 Oracle GoldenGate Windows和UNIX参考指南》。
注意默认情况下,TABLE,SEQUENCE和MAP语句支持带引号的表名和序列名,而无需USEANSISQLQUOTES。