限定数据库对象名
必须在参数文件中对对象名称进行全限定。这意味着每个名称规范都必须是限定名称,不仅是作为 Oracle GoldenGate 参数语法的输入提供的名称,还必须是作为 SQLEXEC 输入提供的 SQL 过程或查询中的名称、用户出口输入中的名称以及参数文件中提供的所有其他输入。
Oracle GoldenGate 支持由两部分和三部分组成的对象名称(适用于数据库)。
两部分名称
大多数数据库只需要按以下格式指定两部分名称:
*owner.object*
例如:HR.EMP
其中:
owner 是方案或数据库,具体取决于数据库如何定义包含数据库对象的逻辑名称空间。 object 是表或其他支持的数据库对象。
Oracle GoldenGate 支持两部分名称的数据库如下所示,并具有相应的两部分命名约定:
-
i 的 Db2:schema.object 和 library/file(member)
-
Db2 LUW:schema.object
-
z/OS 上的 Db2:schema.object
-
MySQL: database.object
-
Oracle AI Database(非 CDB 数据库):schema.object
-
SQL Server:schema.object
-
Teradata:database.object
三部分名称
Oracle GoldenGate 支持由三部分组成的 Oracle 容器数据库名称,但仅在使用下游提取。但是,一般情况下,Oracle GoldenGate 仅支持 Oracle AI Database 的每个 PDB 提取。
需要三部分名称才能从源 Oracle 容器数据库捕获,因为一个提取组可以从多个容器捕获。因此,必须在 Extract TABLE 语句中为每个对象指定容器的名称和方案。
按如下方式指定由三部分组成的 Oracle CDB 名称:
*container.schema.object*
例如:PDBEAST.HR.EMP
应用来自多个容器或目录的数据
要将从多个源容器或目录捕获的数据应用于目标 Oracle 容器数据库,需要包含三部分和两部分名称。在 MAP 语句的 MAP 部分中,每个源对象必须与容器或目录关联,就像在 TABLE 语句中一样。这使您(和复制)能够将多个源容器或目录中的数据正确映射到相应的目标对象。但是,在 MAP 语句的 TARGET 部分中,仅需要两部分名称。这是因为复制一次只能连接到一个目标容器或目录,并且 schema.owner 是足够的限定符。需要多个复制组才能支持多个目标容器或目录。使用 TARGETDB 参数指定目标容器或目录。
指定默认容器或目录
可以使用 SOURCECATALOG 参数为参数文件中的任何后续 TABLE、MAP(或 Oracle SEQUENCE)规范指定默认目录。
以下示例显示如何使用 SOURCECATALOG 为 region 和 jobs 对象指定名为 pdbeast 的默认 Oracle PDB,为 appraisal 对象指定名为 pdbwest 的默认 PDB。pdbeast 中的对象使用全限定三部分名称指定,不需要指定缺省目录。
TABLE pdbeast.hr.emp*;
SOURCECATALOG pdbeast
TABLE region.country*;
TABLE jobs.desg*;
SOURCECATALOG pdbwest
TABLE appraisal.sal*;