@GETENV

使用 @GETENV 函数可返回有关 Oracle GoldenGate 环境的信息。您可以将信息用作以下各项的输入:

语法

@GETENV (
'LAG' , '<unit>' |
'LASTERR' , '<error_info>' |
'JULIANTIMESTAMP' |
'JULIANTIMESTAMP_PRECISE' |
'RECSOUTPUT' |
{'STATS'|'DELTASTATS'}, ['TABLE', '<table>'], '<statistic>' |
'GGENVIRONMENT', '<environment_info>' |
'GGFILEHEADER', '<header_info>'|
'GGHEADER', '<header_info>' |
'RECORD', '<location_info>' |
'DBENVIRONMENT', '*<database_info>,*',
'TRANSACTION', '<transaction_info>' |
'OSVARIABLE', '<variable>' |
'TLFKEY', SYSKEY, <unique_key>
'USERNAME',
'OSUSERNAME',
'MACHINENAME',
'PROGRAMNAME',
'CLIENTIDENTIFIER',
'SOURCEDATABASEINFO'
)

'LAG' , '<unit>'

对提取和复制有效。

使用 @GETENV 的 LAG 选项可返回滞后信息。滞后是提取或复制处理记录的时间与数据源中该记录的时间戳之间的差值。

语法

SEC

‘SEC’

返回滞后(秒)。当没有为 LAG 显式提供单元时,这是缺省设置。

‘MSEC’

返回滞后(毫秒)。

‘MIN’

以分钟为单位返回滞后。

'LASTERR' , '<error_info>'

对复制有效。

使用 @GETENV 的 LASTERR 选项可返回有关复制处理的最后一个失败操作的信息。

语法

@GETENV ('LASTERR', {'DBERRNUM'|'DBERRMSG'|'OPTYPE'|'ERRTYPE'})

‘DBERRNUM’

返回与失败操作关联的数据库错误号。

‘DBERRMSG’

返回与失败操作关联的数据库错误消息。

‘OPTYPE’

返回尝试的操作类型。

‘ERRTYPE’

返回错误的类型。可能的结果如下:

‘ JULIANTIMESTAMP ’ | ’ JULIANTIMESTAMP_PRECISE

对提取和复制有效。

使用 @GETENV 的 JULIANTIMESTAMP 选项以 Julian 格式返回当前时间。单位为微秒(百万分之一秒)。在 Windows 计算机上,该值用零 (0) 填充,因为 Windows 时间戳的粒度为毫秒(每秒一千分之一)。例如,以下是典型的列映射:

MAP dbo.tab8451, Target targ.tabjts, COLMAP (USEDEFAULTS, &
JTSS = @GETENV ('JULIANTIMESTAMP')
JTSFFFFFF = @date ('yyyy-mm-dd hh:mi:ss.ffffff', 'JTS', &
@getenv ('JULIANTIMESTAMP') ) )
;

JTSS 和 JTSFFFFFF 列可以具有的可能值包括:

212096320960773000 2010-12-17:16:42:
40.773000
212096321536540000 2010-12-17:16:52:16.540000
212096322856385000 2010-12-17:17:14:16.385000
212096323062919000 2010-12-17:17:17:42.919000
212096380852787000 2010-12-18:09:20:52.787000

数字的最后三位数(微秒)都包含 0s 的填充。

(可选)可以使用 'JULIANTIMESTAMP_PRECISE' 选项以高精度获取时间戳,尽管这可能会影响性能。

注:请勿将这些值用于排序工序。请改用以下值:@COMPUTE(@COMPUTE(@NUMSTR(@GETENV ("RECORD", "FILESEQNO")*100000000000)+@NUMSTR(@GETENV ("RECORD", "FILERBA")))"。

语法

@GETENV ('JULIANTIMESTAMP')
@GETENV ('JULIANTIMESTAMP_PRECISE')

‘ RECSOUTPUT ’

对提取有效。

使用 @GETENV 的 RECSOUTPUT 选项可检索自进程启动以来提取已写入线索文件的记录数的当前计数。返回的值对于表或事务处理不是唯一的,而是对于“提取”会话本身。每当提取停止,然后再次启动时,计数都将重置为 1。

语法

@GETENV ('RECSOUTPUT')

{'STATS'|'DELTASTATS'}, ['TABLE', '<table>'], '<statistic>'

对提取和复制有效。

使用 @GETENV 的 STATS 和 DELTASTATS 选项可返回每个表中针对以下任何或所有操作处理的操作数:

处理此函数时发生的任何错误(如未解析的表条目或不正确的语法)都会为请求的统计信息值返回零 (0)。

了解重复表规范如何影响操作计数

正在将同一源表处理为多个输出线索的提取将根据链接到 @GETENV 的表写入到的每个本地化输出线索返回统计信息。例如,如果 Extract 捕获表 ABC 的 100 个插入并将表 ABC 写入三个线索,则 @GETENV 的结果为 300

EXTRACT ABC
...
EXTTRAIL c:\north\aa;
TABLE TEST.ABC;
EXTTRAIL c:\north\bb;
TABLE TEST.ABC;
TABLE EMI, TOKENS (TOKEN-CNT = @GETENV ('STATS', 'TABLE', 'ABC', 'DML'));
EXTTRAIL c:\north\cc;
TABLE TEST.ABC;

如果提取多次将源表写入单个输出线索,或者如果复制具有针对同一 TARGET 表的多个 MAP 语句,则统计信息结果将基于所有匹配的 TARGET 项。例如,如果 Replicat 过滤 REGION 'WEST 的 20 行、REGION 'EAST 的 10 行、REGION 'NORTH 的 5 行和 REGION 'SOUTH 的 2 行(表 ABC 的所有行),则 @GETENV 的结果为 37。

REPLICAT ABC
...
MAP TEST.ABC, TARGET TEST.ABC, FILTER (@STREQ (REGION, 'WEST'));
MAP TEST.ABC, TARGET TEST.ABC, FILTER (@STREQ (REGION, 'EAST'));
MAP TEST.ABC, TARGET TEST.ABC, FILTER (@STREQ (REGION, 'NORTH'));
MAP TEST.ABC, TARGET TEST.ABC, FILTER (@STREQ (REGION, 'SOUTH'));
MAP TEST.EMI, TARGET TEST.EMI, &
    COLMAP (CNT = @GETENV ('STATS', 'TABLE', 'ABC', 'DML'));

捕获多个统计信息

您可以执行 @GETENV 的多个实例来获取不同操作类型的计数。

此示例仅返回 INSERT 和 UPDATE 操作的统计信息:

REPLICAT TEST
..
..
MAP TEST.ABC, TARGET TEST.ABC, COLMAP (USEDEFAULTS, IU = @COMPUTE (@GETENV &
    ('STATS', 'TABLE', 'ABC', 'DML') - (@GETENV ('STATS', 'TABLE', &
    'ABC', 'DELETE'));

此示例返回 DDL 和 TRUNCATE 操作的统计信息:

REPLICAT TEST2
..
..
MAP TEST.ABC, TARGET TEST.ABC, COLMAP (USEDEFAULTS, DDL = @COMPUTE &
(@GETENV ('STATS', 'DDL') + (@GETENV ('STATS', 'TRUNCATE'));

用例示例

In the following use case, if all DML from the source is applied successfully to the target, Replicat suspends by means of EVENTACTIONS with SUSPEND, until resumed from GGSCI with SEND REPLICAT with RESUME.

GETENV 用于提取参数文件:

TABLE HR1.HR*;
TABLE HR1.STAT, TOKENS ('env_stats' = @GETENV ('STATS', 'TABLE', &
    'HR1.HR*', 'DML'));

GETENV 用于复制参数文件:

MAP HR1.HR*, TARGET HR2.*;
MAP HR1.STAT, TARGET HR2.STAT, filter (
    @if (
    @token ('stats') =
    @getenv ('STATS', 'TABLE', 'TSSCAT.TCUSTORD', 'DML'), 1, 0 )
    ),
    eventactions (suspend);

在 FILTER 子句中使用统计信息

STATS 和 DELTASTATS 返回的统计信息是动态值,在执行映射后会递增。因此,在多个 MAP 语句中的每个 FILTER 子句中使用 CDR 统计信息时,需要按统计信息值的降序对 MAP 语句进行排序。如果订单不正确,Oracle GoldenGate 将返回错误 OGG-01921。有关此要求的详细信息,请参见 My Oracle Support 知识库中的文档 1556241.1,网址为 https://support.oracle.com 。

示例 4-1 MAP 语句(包含 FILTER 子句中的统计信息)

在以下示例中,包含 CDR_CONFLICTS 统计信息的过滤器的 MAP 语句按统计信息的降序排列:>3、=3、<3。

MAP TEST.GG_HEARTBEAT_TABLE, TARGET TEST.GG_HEARTBEAT_TABLE COMPARECOLS (ON UPDATE ALL),RESOLVECONFLICT(UPDATEROWEXISTS,(DEFAULT, OVERWRITE)),FILTER (@GETENV ("STATS", "CDR_CONFLICTS") > 3),EVENTACTIONS (LOG INFO);MAP TEST.GG_HEARTBEAT_TABLE, TARGET TEST.GG_HEARTBEAT_TABLE COMPARECOLS (ON UPDATE ALL),RESOLVECONFLICT(UPDATEROWEXISTS,(DEFAULT, OVERWRITE)),FILTER (@GETENV ("STATS", "CDR_CONFLICTS") = 3),EVENTACTIONS (LOG WARNING);MAP TEST.GG_HEARTBEAT_TABLE, TARGET TEST.GG_HEARTBEAT_TABLE COMPARECOLS (ON UPDATE ALL),RESOLVECONFLICT(UPDATEROWEXISTS,(DEFAULT, OVERWRITE)),FILTER (@GETENV ("STATS", "CDR_CONFLICTS") < 3),EVENTACTIONS (LOG WARNING);

语法

@GETENV ({'STATS' | 'DELTASTATS'}, ['TABLE', '<table>'], '<statistic>')
{‘STATS’ ‘DELTASTATS’}

STATS 返回自进程启动以来的计数,而 DELTASTATS 返回自上次执行 DELTASTATS 以来的计数。

执行逻辑如下:

‘TABLE’, ‘<table>’

仅对指定的表执行 STATS 或 DELTASTATS。如果不使用此选项,将返回参数文件中 TABLE (Extract) 或 MAP (Replicat) 参数中指定的所有表的计数。

有效的 <table_name> 值包括:

例如,以下操作仅对 hr 方案中的表进行 DML 操作计数:

MAP fin.*, TARGET fin.*;
MAP hr.*, TARGET hr.*;
MAP hq.rpt, TARGET hq.rpt, COLMAP (USEDEFAULTS, CNT = @GETENV ('STATS', 'TABLE', 'hr.*', 'DML'));

同样,以下操作仅对 hr 方案中的 emp 表进行 DML 操作:

MAP fin.*, TARGET fin.*;
MAP hr.*, TARGET hr.*;
MAP hq.rpt, TARGET hq.rpt, COLMAP (USEDEFAULTS, CNT = @GETENV ('STATS', 'TABLE', 'hr.emp', 'DML'));

相比之下,由于在以下示例中没有为 STATS 指定特定表,因此该函数对所有方案中的所有表(在 MAP 语句的 TARGET 子句中表示)计算所有 INSERT、UPDATE 和 DELETE 操作数:

MAP fin.*, TARGET fin.*;
MAP hr.*, TARGET hr.*;
MAP hq.rpt, TARGET hq.rpt, COLMAP (USEDEFAULTS, CNT = &
@GETENV ('STATS', 'DML'));

<'statistic>’

要返回的统计信息的类型。有关在多个 TABLE 或 MAP 语句中使用 FILTER 子句中的统计信息时的重要信息,请参见 Using Statistics in FILTER Clauses 。

‘INSERT’

返回已处理的 INSERT 操作数。

‘UPDATE’

返回已处理的 UPDATE 操作数。

‘DELETE’

返回已处理的 DELETE 操作数。

‘DML’

返回已处理的 INSERT, UPDATE, 和 DELETE 操作总数。

‘TRUNCATE’

返回已处理的 TRUNCATE 操作数。仅当未使用 Oracle GoldenGate DDL 复制时,此变量才返回计数。如果正在使用 DDL 复制,则此变量返回零。

‘DDL’

返回处理的 DDL 操作数,包括 DDL 参数的 INCLUDE 和 EXCLUDE 子句中指定的 TRUNCATE 和 DDL,以及所有范围(MAPPED、UNMAPPED 和 OTHER)。仅当使用 Oracle GoldenGate DDL 复制时,此变量才返回计数。此变量对 'DELTASTATS 无效”。

‘CDR_CONFLICTS’

返回在执行冲突检测和解决 (Conflict Detection and Resolution,CDR) 功能时复制检测到的冲突数。

特定 <table> 的示例:

@GETENV ('STATS','TABLE','HR.EMP','CDR_CONFLICTS')

Replicat 处理的所有表的示例:

@GETENV ('STATS','CDR_CONFLICTS')

‘CDR_RESOLUTIONS_SUCCEEDED’

返回在执行冲突检测和解决 (Conflict Detection and Resolution,CDR) 功能时 Replicat 解决的冲突数。

特定 <table> 的示例:

@GETENV ('STATS','TABLE','HR.EMP', 'CDR_RESOLUTIONS_SUCCEEDED')

Replicat 处理的所有表的示例:

@GETENV ('STATS','CDR_RESOLUTIONS_SUCCEEDED')

‘CDR_RESOLUTIONS_FAILED’

返回在执行冲突检测和解决 (Conflict Detection and Resolution,CDR) 功能时复制无法解决的冲突数。

特定 <table> 的示例:

@GETENV ('STATS','TABLE','HR.EMP', 'CDR_RESOLUTIONS_FAILED')

Replicat 处理的所有表的示例:

@GETENV ('STATS','CDR_RESOLUTIONS_FAILED')

'GGENVIRONMENT' , '<environment_info>'

对提取和复制有效。

使用 @GETENV 的 GGENVIRONMENT 选项可返回有关 Oracle GoldenGate 环境的信息。

语法

@GETENV ('GGENVIRONMENT', {'DOMAINNAME'|'GROUPDESCRIPTION'|'GROUPNAME'|
   'GROUPTYPE'|'HOSTNAME'|'OSUSERNAME'|'PROCESSID')

‘DOMAINNAME’

(仅限 Windows)返回与启动进程的用户关联的域名。

‘GROUPDESCRIPTION’

返回从检查点文件获取的组的说明。需要在使用 ADD 命令创建组时随 DESCRIPTION 参数一起提供说明。

‘GROUPNAME’

返回进程组的名称。

‘GROUPTYPE’

返回进程的类型,即 EXTRACT 或 REPLICAT。

‘HOSTNAME’

返回运行“提取”或“复制”处理的系统的名称。

‘OSUSERNAME’

返回启动进程的操作系统用户名。

‘PROCESSID’

返回由操作系统指定给进程的进程 ID。

'GGHEADER' , '<header_info>'

对提取和复制有效。

使用 @GETENV 的 GGHEADER 选项可从 Oracle GoldenGate 线索记录的标题部分返回信息。标题描述记录的事务处理环境。有关记录标题和记录类型的更多信息,请参阅线索记录格式。

语法

@GETENV ('GGHEADER', {'BEFOREAFTERINDICATOR'|'COMMITTIMESTAMP'|'LOGPOSITION'|
   'LOGRBA'|'OBJECTNAME'|'TABLENAME'|'OPTYPE'|'RECORDLENGTH'|
   'TRANSACTIONINDICATOR'})

注:请勿使用 TIMESTAMP_PRECISE 进行订购操作。请改用以下值:@COMPUTE`(`@COMPUTE`(`@NUMSTR`(`@GETENV` ("RECORD``”,

                "`FILESEQNO`"))*100000000000)+`@NUMSTR`(`@GETENV` ("`RECORD`",



            "`FILERBA`")))`
            {: .infoboxnote}

‘BEFOREAFTERINDICATOR’

返回前或后指示器,显示记录是图像前还是图像后。可能的结果如下:

‘COMMITTIMESTAMP’

返回以 YYYY-MM-DD HH:MI:SS.FFFFFF 格式表示的事务处理时间戳(事务处理提交时间),例如:

2011-01-24 17:08:
59.000000

‘LOGPOSITION’

返回“提取”处理在数据源中的位置。(请参见 LOGRBA 选项。)

‘LOGRBA’

LOGRBA 和 LOGPOSITION 存储记录的数据源中位置的详细信息。对于基于事务日志的产品,LOGRBA 是序列号,LOGPOSITION 是相对字节地址。但是,这些值将因捕获方法和数据库类型而异。

‘OBJECTNAME’ ‘TABLENAME’

返回表名或对象名(如果是非表对象)。

‘OPTYPE’

返回操作类型。可能的结果如下:

INSERT
UPDATE
DELETE
SQL COMPUPDATE
PK UPDATE
TRUNCATE

如果该操作不是上述类型之一,则该函数返回单词 TYPE,并指定给该类型的编号。

‘RECORDLENGTH’

以字节为单位返回记录长度。

‘TRANSACTIONINDICATOR’

返回事务处理指示符。该值对应于记录标题的 TransInd 字段,可使用 Logdump 实用程序查看该字段。

可能的结果如下:

‘ GGFILEHEADER ’、‘ header_info ’

仅对复制有效。

使用 @GETENV 的 GGFILEHEADER 选项可检索 Oracle GoldenGate 提取文件或线索文件的属性。这些属性作为令牌存储在文件头中。注:如果给定数据库、操作系统或 Oracle GoldenGate 版本未提供与给定令牌相关的信息,则将返回 NULL 值。

语法

@GETENV ('GGFILEHEADER', {'COMPATIBILITY'|'CHARSET'|'CREATETIMESTAMP'|
   'FILENAME'|'FILETYPE'|'FILESEQNO'|'FILESIZE'|'FIRSTRECCSN'|
   'LASTRECCSN'|'FIRSTRECIOTIME'|'LASTRECIOTIME'|'URI'|'URIHISTORY'|
   'GROUPNAME'|'DATASOURCE'|'GGMAJORVERSION'|'GGMINORVERSION'|
   'GGVERSIONSTRING'|'GGMAINTENANCELEVEL'|'GGBUGFIXLEVEL'|'GGBUILDNUMBER'|
   'HOSTNAME'|'OSVERSION'|'OSRELEASE'|'OSTYPE'|'HARDWARETYPE'|
   'DBNAME'| 'DBUNIQUENAME'|'DBINSTANCE'|'DBTYPE'|'DBCHARSET'|'DBMAJORVERSION'|
   'DBMINORVERSION'|'DBVERSIONSTRING'|'DBCLIENTCHARSET'|'DBCLIENTVERSIONSTRING'|
   'LASTCOMPLETECSN'|'LASTCOMPLETEXIDS'|'LASTCSN'|'LASTXID'|
   'LASTCSNTS'|'RECOVERYMODE'})

‘COMPATIBILITY’

返回线索文件的兼容性级别。当前 Oracle GoldenGate 版本的兼容性级别必须大于或等于线索文件的兼容性级别,才能读取该文件中的数据记录。当前有效值从 0 或 6 开始。

‘CHARSET’

返回线索文件的全局字符集。例如:

WCP1252-1

‘CREATETIMESTAMP’

返回线索的创建时间,以 INT64 中的本地 GMT Julian 时间表示。

‘FILENAME’

返回线索文件的名称。可以是绝对路径或相对路径,具有正斜杠或反斜杠,具体取决于文件系统。

‘FILETYPE’

返回数字值,指示线索文件是单个文件(例如为批处理运行创建的文件)还是作为线索的一部分进行联机连续处理的按顺序编号的文件。有效值是:

‘FILESEQNO’

返回线索文件的序列号,不带任何前导零。例如,如果文件序列号为 aa000026,则 FILESEQNO 将返回 26。

‘FILESIZE’

返回线索文件的大小。它在活动文件中返回 NULL,并在文件已满且线索结转时返回大小值。

‘FIRSTRECCSN’

返回线索文件中第一条记录的提交序号 (CSN)。值为 NULL,直到完成线索文件。

‘LASTRECCSN’

返回线索文件中最后一条记录的提交序号 (CSN)。值为 NULL,直到完成线索文件。

‘FIRSTRECIOTIME’

返回将第一条记录写入线索文件的时间。值为 NULL,直到完成线索文件。

‘LASTRECIOTIME’

返回将最后一条记录写入线索文件的时间。值为 NULL,直到完成线索文件。

‘RECOVERYMODE’

返回内部 Oracle GoldenGate 使用的恢复信息。它通常设置为 APPENDMODE。

‘URI’

返回创建线索文件的进程的通用资源标识符,格式如下:

<host_name>:<dir>:[:<dir>][:<dir_n>]<group_name>

其中:

以下示例显示了线索的处理位置以及处理方式。这包括以前运行的历史记录。

sys1:home:oracle:v9.5:extora

‘URIHISTORY’

返回在当前进程之前写入线索文件的进程的 URI 的列表。

‘GROUPNAME’

返回与创建线索的“提取”处理关联的组的名称。组名称是发出 ADD EXTRACT 命令时提供的名称。

‘DATASOURCE’

返回进程以数字形式读取的数据源。返回值可以是以下值之一:

‘GGMAJORVERSION’

返回创建线索的主要提取流程版本,以整数表示。例如,如果一个版本是 1.2.3,则返回 1。

‘GGMINORVERSION’

返回创建线索的提取流程的次要版本,以整数表示。例如,如果一个版本是 1.2.3,则返回 2。

‘GGVERSIONSTRING’

返回创建线索的提取流程的维护(或修补)级别,以整数表示。例如,如果版本为 1.2.3,则返回 3。

‘GGMAINTENANCELEVEL’

返回进程的维护版本 (xx.xx.xx))。

‘GGBUGFIXLEVEL’

返回进程的修补程序版本 (xx.xx.xx.xx))。

‘GGBUILDNUMBER’

返回进程的构建编号。

‘HOSTNAME’

返回正在运行写入线索的提取的计算机的 DNS 名称。例如:

‘OSVERSION’

返回写入线索的提取正在运行的计算机操作系统的主版本。例如:

‘OSRELEASE’

返回运行写入线索的提取的计算机操作系统的发行版版本。例如,为 OSVERSION 提供的示例的发行版版本可以是:

‘OSTYPE’

返回写入线索的提取正在运行的计算机的操作系统类型。例如:

‘HARDWARETYPE’

返回运行写入线索的提取的计算机的硬件类型。例如:

‘DBNAME’

返回数据库的名称,例如 findb。

‘DBUNIQUENAME’

返回从源线索文件的标头读取的 DB_UNIQUE_NAME 标记的值。其值与源数据库的 DB_UNIQUE_NAME 参数匹配。

‘DBINSTANCE’

返回数据库实例的名称(如果适用于数据库类型),例如 ORA1022A。

‘DBTYPE’

返回在线索文件中生成数据的数据库类型。可以是以下一项:

DB2 UDB
DB2 ZOS
MSSQL
MYSQL
ORACLE
TERADATA
ODBC

‘DBCHARSET’

返回生成线索文件中数据的数据库所使用的字符集。(对于某些数据库,这将为空。)

‘DBMAJORVERSION’

返回在线索文件中生成数据的数据库的主要版本。

‘DBMINORVERSION’

返回生成线索文件中数据的数据库的次要版本。

‘DBVERSIONSTRING’

返回在线索文件中生成数据的数据库的维护(修补程序)级别。

‘DBCLIENTCHARSET’

返回数据库客户机使用的字符集。

‘DBCLIENTVERSIONSTRING’

返回数据库客户机的维护(修补程序)级别。(对于某些数据库,这将为空。)

‘LASTCOMPLETECSN’

返回内部 Oracle GoldenGate 使用的恢复信息。

‘LASTCOMPLETEXIDS’

返回内部 Oracle GoldenGate 使用的恢复信息。

‘LASTCSN’

返回内部 Oracle GoldenGate 使用的恢复信息。

‘LASTXID’

返回内部 Oracle GoldenGate 使用的恢复信息。

‘LASTCSNTS’

返回内部 Oracle GoldenGate 使用的恢复信息。

'RECORD' , '<location_info>'

对数据泵提取或复制有效。

使用 @GETENV 的 RECORD 选项可返回 Oracle GoldenGate 线索文件中记录的位置或 Oracle rowid。

语法

@GETENV ('RECORD', {'TIMESTAMP_PRECISE'|'FILESEQNO'|'FILERBA'|'ROWID'|'RSN'|'TIMESTAMP'})

‘TIMESTAMP_PRECISE’

对提取或复制有效。

TIMESTAMP_PRECISE 选项返回从年份到微秒的时间戳。但是,根据数据库,该值可在 0 微秒内以毫秒为单位。

‘FILESEQNO’

返回不带前导零的线索文件的序列号。

‘FILERBA’

返回 FILESEQNO 文件中记录的相对字节地址。

‘ROWID’

(对 Oracle 有效)返回记录的行 ID。

‘RSN’

返回事务处理中的记录序号。此值并不总是生成唯一增加的值,不应用于对操作进行排序。对于订购事务处理或事务处理中的 DML 操作,请使用 MOS 2036276.1 中概述的信息。

‘TIMESTAMP’

返回记录的时间戳。

示例:

REC-TIMESTAMP: 2017-10-31 06:21:07 REC-TIMESTAMP-PRECISE: 2017-10-31 06:21:07.478064

'DBENVIRONMENT' , '<database_info>'

对提取和复制有效。

使用 @GETENV 的 DBENVIRONMENT 选项可返回数据库的全局环境信息。

语法

@GETENV ('DBENVIRONMENT', {'DBNAME'|'DBUNIQUENAME'|'DBVERSION'|'DBUSER'|'SERVERNAME'})

‘DBNAME’

返回数据库名称。

‘DBUNIQUENAME’

返回进程所连接到的数据库的 DB_UNIQUE_NAME 参数的值。提取的源数据库和复制的目标数据库。将仅为 Oracle 数据库设置此值。

‘DBVERSION’

返回数据库版本。

‘DBUSER’

返回数据库登录用户。请注意,SQL Server 不会记录用户 ID。

‘SERVERNAME’

返回服务器的名称。

'TRANSACTION' , '<transaction_info>'

对提取有效。

使用 @GETENV 的 TRANSACTION 选项可返回有关源事务处理的信息。此选项对提取处理有效,但对泵提取和复制无效。

语法

@GETENV ('TRANSACTION', {'TIMESTAMP_PRECISE'|'TRANSACTIONID'|'XID'|'CSN'|'TIMESTAMP'|'NAME'|
   'USERNAME'|'PLANNAME' | 'LOGBSN' | 'REDOTHREAD' | 'PROGRAMNAME' | 'CLIENTIDENTIFIER' | 'MACHINENAME' | 'USERNAME')

注:请勿使用 TIMETSAMP_PRECISE 或 TIMESTAMP 进行订购操作。请改用以下值:@COMPUTE(@COMPUTE(@NUMSTR(@GETENV ("RECORD", "FILESEQNO"))*100000000000)+@NUMSTR(@GETENV ("RECORD", "FILERBA")))

‘TIMESTAMP_PRECISE’

此选项对提取有效。使用 TIMESTAMP_PRECISE 可返回从年份到微秒的时间戳。但是,根据数据库,该值可在 0 微秒内以毫秒为单位

‘TRANSACTIONID’ ‘XID’

返回事务处理 ID 编号。可以使用 TRANSACTIONID 或 XID。事务处理 ID 和 CSN 与每个事务处理的第一个记录关联,并作为标记存储在线索记录中。对于每个事务 ID,都有一个关联的 CSN。交易 ID 令牌在任何平台上都没有零填充,因为它们从未被评估为相对值。它们仅针对它们是否匹配进行评估。请注意,在线索中,事务处理 ID 标记显示为 TRANID。

‘CSN’

返回提交序号 (CSN)。为以下数据库返回时,CSN 不会填充零值:Oracle、Db2 LUW 和 Db2 z/OS。对于所有其他受支持的数据库,CSN 将进行零填充。

请注意,在线索中,CSN 标记显示为 LOGCSN。有关 CSN 标记的其他信息,请参见 TRANSACTIONID | XID 环境值。

有关 CSN 的更多信息,请参见 Commit Sequence Number (CSN) 。

‘TIMESTAMP’

返回事务处理的提交时间戳。

‘NAME’

返回事务处理名称(如果可用)。

‘USERNAME’

(Oracle) 返回提交上次事务处理的数据库用户的 Oracle 用户名。这对泵提取和/或复制无效。

‘PLANNAME’

(Db2 z/OS) 返回最初执行当前事务处理的计划名称。计划名称包含在恢复日志记录的开始单位中。

‘LOGBSN’

返回事务处理日志中的开始序号 (BSN)。BSN 是标识提取内存中保留的最早未提交事务处理的开始的本机序号。例如,给定 Oracle 数据库,BSN 将表示为系统更改号 (System Change Number,SCN)。BSN 对应于提取的当前 I/O 检查点值。使用 @GETENV ('TRANSACTION', 'LOGBSN') 时,复制可以从线索中获取此值。还可以通过使用带有 DETAIL 选项的 INFO REPLICAT 命令来获取此值。从 Replicat 获取 BSN 的目的是在系统故障或文件系统损坏导致 Extract 检查点文件不可用时获取 Extract 的恢复点。

‘REDOTHREAD’

返回 RAC 节点提取的线程编号;在非 RAC 节点提取时,值始终为 1。对于数据泵和复制,将返回提取捕获 RAC 节点所使用的线程 ID;在非 RAC 上,@GETENV() 将返回错误。如果事务处理由 RAC 节点上的提取捕获,则日志转储会在标记部分中显示标记 ORATHREADID。

‘PROGRAMNAME’

启动事务处理或会话的程序或应用程序的名称。

‘CLIENTIDENTIFIER’

使用 DBMS_SESSION_.set_identifier() 设置的值。

‘MACHINENAME’

运行数据库的主机、计算机或服务器的名称

‘USERNAME’

数据库登录用户名。

示例:

DB2 zOS:
TRANS-TIMESTAMP:         2017-10-31 06:21:07
TRANS-TIMESTAMP-PRECISE: 2017-10-31 06:21:07.485792

'OSVARIABLE' , '<variable>'

对提取和复制有效。

使用 @GETENV 的 OSVARIABLE 选项可返回指定操作系统环境变量的字符串值。

语法

@GETENV ('OSVARIABLE', '<variable>')

<'variable'>

变量的名称。搜索与提供的变量名称完全匹配。例如,UNIX grep 命令将返回以下所有变量,但 @GETENV ('OSVARIABLE', 'HOME') 将仅返回 HOME 的值:

ANT_HOME=/usr/local/ant
JAVA_HOME=/usr/java/j2sdk1.4.2_10
HOME=/home/judyd
ORACLE_HOME=/rdbms/oracle/ora1022i/64

如果操作系统支持区分大小写,则搜索区分大小写。

'TLFKEY' , SYSKEY, '<unique_key>'

对提取和复制有效。

使用 @GETENV 的 TLFKEY 选项可将唯一键与 ACI 的 Base24 应用程序中的 TLF/PTLF 记录关联。64 位密钥由以下串联项组成:

语法

@GETENV ('TLFKEY', SYSKEY, <unique_key>)

SYSKEY, <unique_key>

源 TLF/PTLF 文件的 NonStop 节点编号。请勿将此语法元素括在引号中。

示例:

GETENV ('TLFKEY', SYSKEY, 27)

‘ SOURCEDATABASEINFO ’

此选项包含 DBUNIQUENAME 和 DBNAME 字段。SOURCEDATABASEINFO 中的字段与 GGFILEHEADER 字段不同。首先,与 GGFILEHEADER 中的字段相比,它们的性能更好,因此使用 SOURCEDATABASEINFO 可以更好地替代性能至关重要的情况。其次,当 DBUNIQUENAME 标记在线索标头中不可用时,可能是因为线索文件由较旧版本的 Oracle GoldenGate 生成,还是因为数据库不是 Oracle,@GETENV 将 DBUNIQUENAME 视为 DBNAME 的同义词。在这种情况下,将向报告文件写入一条警告消息,这是第一次读取没有标记的标头。