@GETENV
@GETENV 함수를 사용하여 Oracle GoldenGate 환경에 대한 정보를 반환합니다. 이 정보를 다음에 대한 입력으로 사용할 수 있습니다.
-
내장 프로시저 또는 query(
SQLEXEC사용) -
열 맵(
TABLE또는MAP의COLMAP옵션 사용) -
사용자 토큰(
TABLE의TOKENS옵션으로 정의되고@TOKEN함수를 통해 대상 열에 매핑됨) -
GET_ENV_VALUEUser Exit 기능("GET_ENV_VALUE" 참조)주: 모든 구문 옵션은 구문 설명에 표시된 대로 따옴표로 묶어야 합니다.
-
함수를 실행하는 프로세스(추출 또는 Replicat)에 따라 소스 또는 대상 데이터베이스의
DB_UNIQUE_NAME매개변수 값을 검색합니다.
구문
@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>'
Extract 및 Replicat에 적합합니다.
@GETENV의 LAG 옵션을 사용하여 지연 정보를 반환합니다. 지연 시간은 Extract 또는 Replicat가 레코드를 처리한 시간과 데이터 소스의 해당 레코드에 대해 시간기록 간에 차이입니다.
구문
SEC
‘SEC’
지연을 초 단위로 반환합니다. LAG에 대해 단위가 명시적으로 제공되지 않은 경우 기본값입니다.
‘MSEC’
지연을 밀리초 단위로 반환합니다.
‘MIN’
지연을 분 단위로 반환합니다.
'LASTERR' , '<error_info>'
Replicat에 적합합니다.
@GETENV의 LASTERR 옵션을 사용하여 Replicat에서 처리된 마지막으로 실패한 작업에 대한 정보를 반환합니다.
구문
@GETENV ('LASTERR', {'DBERRNUM'|'DBERRMSG'|'OPTYPE'|'ERRTYPE'})
‘DBERRNUM’
실패한 작업과 연관된 데이터베이스 오류 번호를 반환합니다.
‘DBERRMSG’
실패한 작업과 연관된 데이터베이스 오류 메시지를 반환합니다.
‘OPTYPE’
시도된 작업 유형을 반환합니다.
‘ERRTYPE’
오류 유형을 반환합니다. 가능한 결과는 다음과 같습니다.
-
DB(데이터베이스 오류의 경우) -
MAP(매핑 오류의 경우)
'JULIANTIMESTAMP'|'JULIANTIMESTAMP_PRECISE'
Extract 및 Replicat에 적합합니다.
@GETENV의 JULIANTIMESTAMP 옵션을 사용하여 현재 시간을 Julian 형식으로 반환합니다. 단위는 마이크로초(1백만분의 1초)입니다. Windows 시스템에서는 Windows 시간 기록의 세분성이 밀리초(1/1/1000초)이므로 값이 0으로 채워집니다. 예를 들어, 다음은 일반적인 열 매핑입니다.
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'
Extract의 경우 적합합니다.
@GETENV의 RECSOUTPUT 옵션을 사용하여 Extract가 프로세스 시작 이후 추적 파일에 기록한 현재 레코드 수를 검색합니다. 반환된 값이 테이블 또는 트랜잭션에 대해 고유하지 않고 대신 Extract 세션 자체에 대해 고유합니다. 추출이 중지될 때마다 개수가 1로 재설정되고 다시 시작됩니다.
구문
@GETENV ('RECSOUTPUT')
{'STATS'|'DELTASTATS'}, ['TABLE', '<table>'], '<statistic>'
Extract 및 Replicat에 적합합니다.
@GETENV의 STATS 및 DELTASTATS 옵션을 사용하여 다음 중 일부 또는 모두에 대해 테이블당 처리된 작업 수를 반환합니다.
-
INSERT작업 -
UPDATE작업 -
DELETE작업 -
TRUNCATE작업 -
총
DML작업 -
총
DDL작업 -
충돌 감지 및 해결(CDR) 기능이 사용된 경우 발생한 충돌 수입니다.
-
성공한 CDR 해결 수
-
실패한 CDR 해결 수
분석되지 않은 테이블 항목 또는 잘못된 구문과 같은 이 함수의 처리 중 발생한 오류는 요청된 통계 값에 대해 0을 반환합니다.
반복 테이블 사양이 작업 수에 미치는 영향 이해
다중 출력 추적에 대해 동일한 소스 테이블을 처리하는 Extract는 @GETENV에 링크된 테이블이 기록되는 각 지역화된 출력 추적을 기반으로 통계를 반환합니다. 예를 들어, Extract가 ABC 테이블에 대해 100개의 삽입을 캡처하고 ABC 테이블을 3개의 트레일에 기록하는 경우 @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;
소스 테이블을 단일 출력 트레일에 여러 번 기록하는 Extract의 경우 또는 동일한 TARGET 테이블에 대해 여러 개의 MAP 문이 있는 Replicat의 경우 통계 결과는 일치하는 모든 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'));
예제 사용 사례
다음 사용 사례에서 소스의 모든 DML가 대상에 성공적으로 적용된 경우 Replicat는 SUSPEND를 사용하는 EVENTACTIONS를 통해 RESUME를 사용하는 SEND REPLICAT를 사용하는 GGSCI에서 재개될 때까지 일시 중지됩니다.
Extract 매개변수 파일에 사용되는 GETENV:
TABLE HR1.HR*;
TABLE HR1.STAT, TOKENS ('env_stats' = @GETENV ('STATS', 'TABLE', &
'HR1.HR*', 'DML'));
GETENV는 Replicat 매개변수 파일에 사용됩니다.
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 오류를 반환합니다. 이 요구 사항에 대한 자세한 내용은 https://support.oracle.com에서 My Oracle Support의 기술 자료에 있는 문서 1556241.1을 참조하십시오.
FILTER 절의 통계를 포함하는 예제 4-1 MAP 문
다음 예에서 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의 마지막 실행 이후 개수를 반환합니다.
실행 논리는 다음과 같습니다.
-
Extract가
@GETENV를STATS또는DELTASTATS로 충족하는 트랜잭션 레코드를 처리하는 경우 테이블 이름이TABLE문의 분석된 소스 테이블과 일치합니다. -
Replicat가
@GETENV를STATS또는DELTASTATS로 충족하는 추적 레코드를 처리할 때 테이블 이름이MAP문의TARGET절에 있는 확인된 대상 테이블과 일치합니다.
‘TABLE’, ‘<table>’
지정된 테이블에 대해서만 STATS 또는 DELTASTATS를 실행합니다. 이 옵션이 없으면 매개변수 파일의 TABLE(추출) 또는 MAP(복제) 매개변수에 지정된 모든 테이블에 대한 개수가 반환됩니다.
유효한 <table_name> 값은 다음과 같습니다.
-
'
<schema.table>'은 테이블을 지정합니다. -
<'table'>는 기본 스키마의 테이블을 지정합니다. -
'*schema.'는 스키마의 모든 테이블을 지정합니다.
-
'*'는 기본 스키마의 모든 테이블을 지정합니다.
예를 들어, 다음은 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 절의 통계를 사용할 때 중요한 정보는 FILTER 절의 통계 사용을 참조하십시오.
‘INSERT’
처리된 INSERT 작업 수를 반환합니다.
‘UPDATE’
처리된 UPDATE 작업 수를 반환합니다.
‘DELETE’
처리된 DELETE 작업 수를 반환합니다.
‘DML’
처리된 총 INSERT, UPDATE, 및 DELETE 작업을 반환합니다.
‘TRUNCATE’
처리된 TRUNCATE 작업 수를 반환합니다. 이 변수는 Oracle GoldenGate DDL 복제가 사용되지 않는 경우에만 개수를 반환합니다. DDL 복제를 사용 중인 경우 이 변수는 0을 반환합니다.
‘DDL’
DDL 매개변수의 INCLUDE 및 EXCLUDE 절에 지정된 TRUNCATE 및 DDL, 모든 범위(MAPPED, UNMAPPED, OTHER)를 포함하여 처리된 DDL 작업 수를 반환합니다. 이 변수는 Oracle GoldenGate DDL 복제가 사용 중인 경우에만 개수를 반환합니다. 이 변수는 'DELTASTATS에 적합하지 않습니다.
‘CDR_CONFLICTS’
CDR(충돌 감지 및 해결) 기능을 실행할 때 Replicat가 감지한 충돌 수를 반환합니다.
특정 <table>에 대한 예:
@GETENV ('STATS','TABLE','HR.EMP','CDR_CONFLICTS')
Replicat에서 처리된 모든 테이블의 예:
@GETENV ('STATS','CDR_CONFLICTS')
‘CDR_RESOLUTIONS_SUCCEEDED’
CDR(충돌 감지 및 해결) 기능을 실행할 때 Replicat가 해결한 충돌 수를 반환합니다.
특정 <table>에 대한 예:
@GETENV ('STATS','TABLE','HR.EMP', 'CDR_RESOLUTIONS_SUCCEEDED')
Replicat에서 처리된 모든 테이블의 예:
@GETENV ('STATS','CDR_RESOLUTIONS_SUCCEEDED')
‘CDR_RESOLUTIONS_FAILED’
CDR(충돌 감지 및 해결) 기능을 실행할 때 Replicat에서 해결할 수 없는 충돌 수를 반환합니다.
특정 <table>에 대한 예:
@GETENV ('STATS','TABLE','HR.EMP', 'CDR_RESOLUTIONS_FAILED')
Replicat에서 처리된 모든 테이블의 예:
@GETENV ('STATS','CDR_RESOLUTIONS_FAILED')
'GGENVIRONMENT' , '<environment_info>'
Extract 및 Replicat에 적합합니다.
@GETENV의 GGENVIRONMENT 옵션을 사용하여 Oracle GoldenGate 환경에 대한 정보를 반환합니다.
구문
@GETENV ('GGENVIRONMENT', {'DOMAINNAME'|'GROUPDESCRIPTION'|'GROUPNAME'|
'GROUPTYPE'|'HOSTNAME'|'OSUSERNAME'|'PROCESSID')
‘DOMAINNAME’
(Windows에만 해당) 프로세스를 시작한 사용자와 연관된 도메인 이름을 반환합니다.
‘GROUPDESCRIPTION’
체크포인트 파일에서 가져온 그룹에 대한 설명을 반환합니다. ADD 명령으로 그룹을 생성할 때 DESCRIPTION 매개변수와 함께 설명을 제공해야 합니다.
‘GROUPNAME’
프로세스 그룹의 이름을 반환합니다.
‘GROUPTYPE’
프로세스 유형(EXTRACT 또는 REPLICAT)을 반환합니다.
‘HOSTNAME’
Extract 또는 Replicat 프로세스를 실행하는 시스템의 이름을 반환합니다.
‘OSUSERNAME’
프로세스를 시작한 운영 체제 사용자 이름을 반환합니다.
‘PROCESSID’
운영 체제에서 프로세스에 할당하는 프로세스 ID를 반환합니다.
'GGHEADER' , '<header_info>'
Extract 및 Replicat에 적합합니다.
@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’
레코드가 이전 이미지인지 또는 이후 이미지인지를 보여주는 이전 또는 이후 표시자를 반환합니다. 가능한 결과는 다음과 같습니다.
-
BEFORE(이미지 앞) -
AFTER(이미지 후)
‘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’
트랜잭션 표시자를 반환합니다. 이 값은 Logdump 유틸리티를 사용하여 볼 수 있는 레코드 헤더의 TransInd 필드에 해당합니다.
가능한 결과는 다음과 같습니다.
-
BEGIN(트랜잭션의 첫번째 레코드인TransInD를 0으로 나타냄) -
MIDDLE(트랜잭션 중간에 있는 레코드인TransInD1을 나타냄) -
END(트랜잭션의 마지막 레코드인TransInD/2를 나타냄) -
WHOLE(트랜잭션에 있는 유일한 레코드인TransInD/3을 나타냄)
'GGFILEHEADER' , 'header_info'
Replicat에만 적합합니다.
@GETENV의 GGFILEHEADER 옵션을 사용하여 Oracle GoldenGate Extract 파일 또는 트레일 파일의 속성을 검색합니다. 이러한 속성은 파일 헤더에 토큰으로 저장됩니다. 주: 제공된 데이터베이스, 운영 체제 또는 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 사이입니다.
-
1은 추적 파일이 파일 버전 지정 정보가 포함된 파일 헤더를 지원하는 Oracle GoldenGate 버전 10.0 이상임을 의미합니다.
-
0은 추적 파일이 10.0보다 오래된 Oracle GoldenGate 버전임을 의미합니다. 파일 헤더는 해당 릴리스에서 지원되지 않습니다. 0 값은 해당 Oracle GoldenGate 버전과의 역호환성을 위해 사용됩니다.
-
5는 추적 파일이 Oracle GoldenGate 버전 12.2 이상임을 의미합니다.
-
6은 추적 파일이 Oracle GoldenGate 버전 12.3.0.1임을 의미합니다.
이 값은 추적 파일 버전에 따라 Oracle GoldenGate 버전에 따라 계속 증가합니다.
‘CHARSET’
추적 파일의 전역 문자 집합을 반환합니다. 예:
WCP1252-1
‘CREATETIMESTAMP’
추적이 생성된 시간을 INT64의 로컬 GMT 줄리안 시간으로 반환합니다.
‘FILENAME’
추적 파일의 이름을 반환합니다. 절대 경로 또는 상대 경로일 수 있으며 파일 시스템에 따라 슬래시 또는 역방향 슬래시가 지정될 수 있습니다.
‘FILETYPE’
추적 파일이 단일 파일(예: 뱃치 실행을 위해 생성된 파일)인지 온라인 연속 처리를 위한 추적의 일부인 순차적으로 번호가 지정된 파일인지 나타내는 숫자 값을 반환합니다. 적합한 값은 다음과 같습니다.
-
0 - EXTFILE -
1 - EXTTRAIL -
2 - UNIFIED and EXTFILE -
3 - UNIFIED and EXTTRAIL
‘FILESEQNO’
선행 0 없이 추적 파일의 시퀀스 번호를 반환합니다. 예를 들어, 파일 시퀀스 번호가 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>
설명:
-
host_name은 프로세스를 호스트하는 서버의 이름입니다. -
dir은 Oracle GoldenGate 설치 경로의 하위 디렉토리입니다. -
group_name는 프로세스와 연결된 프로세스 그룹의 이름입니다.
다음 예에서는 추적이 처리된 위치 및 처리 방법을 보여줍니다. 여기에는 이전 실행 내역이 포함됩니다.
sys1:home:oracle:v9.5:extora
‘URIHISTORY’
현재 프로세스 전에 추적 파일에 기록된 프로세스의 URI 목록을 반환합니다.
-
기본 추출의 경우 이 필드가 비어 있습니다.
-
데이터 펌프의 경우 이 필드는 입력 트레일 파일의
URIHistory+URI입니다.
‘GROUPNAME’
추적을 생성한 추출 프로세스와 연계된 그룹의 이름을 반환합니다. 그룹 이름은 ADD EXTRACT 명령이 실행될 때 제공된 이름입니다.
‘DATASOURCE’
프로세스에서 읽은 데이터 소스를 숫자로 반환합니다. 반환 값은 다음 중 하나일 수 있습니다.
-
DS_EXTRACT_TRAILS: 소스가 변경 데이터로 채워진 Oracle GoldenGate 추출 파일입니다. 반환값은0입니다. -
DS_DATABASE:소스는 추적에 기록된 데이터베이스 테이블에서 직접 선택으로,SOURCEISTABLE방식의 초기 로드에 사용되었습니다. 반환값은2입니다. -
DS_TRAN_LOGS: 소스가 데이터베이스 트랜잭션 로그입니다. 반환값은3입니다. -
DS_INITIAL_DATA_LOAD: 소스가 초기 로드를 위해 데이터베이스 테이블에서 직접 선택되었습니다. 반환값은4입니다. -
DS_VAM_EXTRACT:소스가 VAM(공급업체 액세스 모듈)입니다. 반환값은5입니다. -
DS_VAM_TWO_PHASE_COMMIT:소스가 VAM 추적입니다. 반환값은6입니다.
‘GGMAJORVERSION’
추적을 생성한 Extract 프로세스의 주 버전을 정수로 나타냅니다. 예를 들어, 버전이 1.2.3이면 1을 반환합니다.
‘GGMINORVERSION’
추적을 생성한 Extract 프로세스의 부 버전을 정수로 나타냅니다. 예를 들어, 버전이 1.2.3이면 2를 반환합니다.
‘GGVERSIONSTRING’
추적을 생성한 Extract 프로세스의 유지 관리(또는 패치) 레벨을 정수로 나타냅니다. 예를 들어, 버전이 1.2.3이면 3을 반환합니다.
‘GGMAINTENANCELEVEL’
프로세스의 유지 관리 버전(xx.xx.xx))을 반환합니다.
‘GGBUGFIXLEVEL’
프로세스의 패치 버전(xx.xx.xx.xx))을 반환합니다.
‘GGBUILDNUMBER’
프로세스의 빌드 번호를 반환합니다.
‘HOSTNAME’
추적을 기록한 Extract가 실행 중인 시스템의 DNS 이름을 반환합니다. 예:
-
sysa -
sysb -
paris -
hq25
‘OSVERSION’
추적을 작성한 Extract가 실행 중인 시스템의 주요 운영체제 버전을 반환합니다. 예:
-
Version s10_69 -
#1 SMP Fri Feb 24 16:56:28 EST 2006 -
5.00.2195 Service Pack 4
‘OSRELEASE’
추적을 작성한 Extract가 실행 중인 시스템의 운영체제 릴리스 버전을 반환합니다. 예를 들어, OSVERSION에 대해 제공된 예제의 릴리스 버전은 다음과 같습니다.
-
5.10 -
2.6.9-34.ELsmp
‘OSTYPE’
추적을 기록한 Extract가 실행 중인 시스템의 운영체제 유형을 반환합니다. 예:
-
SunOS -
Linux -
Microsoft Windows
‘HARDWARETYPE’
추적을 기록한 Extract가 실행 중인 시스템의 하드웨어 유형을 반환합니다. 예:
-
sun4u -
x86_64 -
x86
‘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>'
데이터 펌프 Extract 또는 Replicat에 적합합니다.
@GETENV의 RECORD 옵션을 사용하여 Oracle GoldenGate 추적 파일에서 레코드의 위치 또는 Oracle rowid를 반환합니다.
구문
@GETENV ('RECORD', {'TIMESTAMP_PRECISE'|'FILESEQNO'|'FILERBA'|'ROWID'|'RSN'|'TIMESTAMP'})
‘TIMESTAMP_PRECISE’
Extract 또는 Replicat에 적합합니다.
TIMESTAMP_PRECISE 옵션은 연도부터 마이크로초까지의 시간 기록을 반환합니다. 그러나 데이터베이스에 따라 값은 0마이크로초의 밀리초 단위일 수 있습니다.
‘FILESEQNO’
선행 0 없이 추적 파일의 시퀀스 번호를 반환합니다.
‘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>'
Extract 및 Replicat에 적합합니다.
@GETENV의 DBENVIRONMENT 옵션을 사용하여 데이터베이스에 대한 전역 환경 정보를 반환합니다.
구문
@GETENV ('DBENVIRONMENT', {'DBNAME'|'DBUNIQUENAME'|'DBVERSION'|'DBUSER'|'SERVERNAME'})
‘DBNAME’
데이터베이스 이름을 출력합니다.
‘DBUNIQUENAME’
프로세스가 연결된 데이터베이스의 DB_UNIQUE_NAME 매개변수 값을 반환합니다. Extract의 경우 소스 데이터베이스, Replicat의 경우 대상 데이터베이스입니다. 이 값은 Oracle 데이터베이스에 대해서만 설정됩니다.
‘DBVERSION’
데이터베이스 버전을 반환합니다.
‘DBUSER’
데이터베이스 로그인 사용자를 반환합니다. SQL Server는 사용자 ID를 기록하지 않습니다.
‘SERVERNAME’
서버 이름을 반환합니다.
'TRANSACTION' , '<transaction_info>'
Extract의 경우 적합합니다.
@GETENV의 TRANSACTION 옵션을 사용하여 소스 트랜잭션에 대한 정보를 반환합니다. 이 옵션은 추출 프로세스에 적합하지만 펌프 추출 및 Replicat에는 적합하지 않습니다.
구문
@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’
이 옵션은 Extract에 적합합니다. TIMESTAMP_PRECISE를 사용하면 연도부터 마이크로초까지의 시간 기록이 반환됩니다. 그러나 데이터베이스에 따라 값은 0마이크로초의 밀리초 단위일 수 있습니다.
‘TRANSACTIONID’ |
‘XID’ |
트랜잭션 ID 번호를 반환합니다. TRANSACTIONID 또는 XID를 사용할 수 있습니다. 트랜잭션 ID 및 CSN는 모든 트랜잭션의 첫 번째 레코드와 연계되며 추적 레코드에 토큰으로 저장됩니다. 각 트랜잭션 ID에 대해 연관된 CSN가 있습니다. 트랜잭션 ID 토큰은 상대 값으로 평가되지 않기 때문에 어떤 플랫폼에서도 0 패딩이 없습니다. 일치하는지 또는 일치하지 않는지에 대해서만 평가됩니다. 추적에서 트랜잭션 ID 토큰은 TRANID로 표시됩니다.
‘CSN’
커밋 시퀀스 번호(CSN)를 반환합니다. CSN는 Oracle, Db2 LUW 및 Db2 z/OS 데이터베이스에 대해 반환될 때 0으로 채워지지 않습니다. 지원되는 다른 모든 데이터베이스의 경우 CSN가 0으로 채워집니다.
추적에서 CSN 토큰은 LOGCSN로 표시됩니다. CSN 토큰에 대한 자세한 내용은 TRANSACTIONID | XID 환경 값을 참조하십시오.
CSN에 대한 자세한 내용은 Commit Sequence Number (CSN)를 참조하십시오.
‘TIMESTAMP’
트랜잭션의 커밋 시간 기록을 반환합니다.
‘NAME’
사용 가능한 경우 트랜잭션 이름을 반환합니다.
‘USERNAME’
(Oracle) 마지막 트랜잭션을 커밋한 데이터베이스 사용자의 Oracle 사용자 이름을 반환합니다. 이는 펌프 Extract 및/또는 Replicat에 적합하지 않습니다.
‘PLANNAME’
(Db2 z/OS) 현재 트랜잭션이 원래 실행된 계획 이름을 반환합니다. 계획 이름은 복구 로그 레코드의 시작 단위에 포함됩니다.
‘LOGBSN’
트랜잭션 로그에서 시작 시퀀스 번호(BSN)를 반환합니다. BSN은 Extract 메모리에 보유된 커밋되지 않은 가장 오래된 트랜잭션의 시작을 식별하는 고유 시퀀스 번호입니다. 예를 들어, Oracle 데이터베이스의 경우 BSN은 SCN(시스템 변경 번호)으로 표현됩니다. BSN은 Extract의 현재 I/O 체크포인트 값에 해당합니다. 이 값은 @GETENV ('TRANSACTION', 'LOGBSN')를 사용할 때 Replicat가 추적에서 가져올 수 있습니다. 이 값은 DETAIL 옵션과 함께 INFO REPLICAT 명령을 사용하여 얻을 수도 있습니다. Replicat에서 BSN을 얻는 목적은 시스템 오류 또는 파일 시스템 손상으로 인해 Extract 체크포인트 파일을 사용할 수 없는 경우 Extract에 대한 복구 지점을 얻는 것입니다.
‘REDOTHREAD’
RAC 노드 추출의 스레드 번호를 반환합니다. 비RAC 노드에서 추출되는 값은 항상 1입니다. 데이터 펌프 및 Replicat의 경우 RAC 노드의 Extract 캡처에 사용되는 스레드 ID가 반환되고, 비RAC의 경우 @GETENV()가 오류를 반환합니다. RAC 노드에서 Extract에 의해 트랜잭션이 캡처된 경우 Logdump는 토큰 섹션에 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>'
Extract 및 Replicat에 적합합니다.
@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>'
Extract 및 Replicat에 적합합니다.
@GETENV의 TLFKEY 옵션을 사용하여 고유 키를 ACI의 Base24 응용 프로그램에서 TLF/PTLF 레코드와 연관시킵니다. 64비트 키는 다음과 같은 연결된 항목으로 구성됩니다.
-
2000년 이후의 시간(초)입니다.
-
TLF/PTLF 블록에 있는 레코드의 블록 번호에 10을 곱합니다.
-
사용자가 지정한 노드입니다(0에서 255 사이여야 함).
구문
@GETENV ('TLFKEY', SYSKEY, <unique_key>)
SYSKEY, <unique_key>
소스 TLF/PTLF 파일의 NonStop 노드 번호입니다. 이 구문 요소는 따옴표로 묶지 마십시오.
예제:
GETENV ('TLFKEY', SYSKEY, 27)
'SOURCEDATABASEINFO'
이 옵션에는 DBUNIQUENAME 및 DBNAME 필드가 있습니다. SOURCEDATABASEINFO의 필드는 GGFILEHEADER 필드와 다릅니다. 첫째, GGFILEHEADER의 필드와 비교하여 성능이 더 좋으므로 SOURCEDATABASEINFO를 사용하면 성능이 중요한 시나리오를 대신할 수 있습니다. 둘째, 추적 파일이 이전 버전의 Oracle GoldenGate에 의해 생성되었거나 데이터베이스가 Oracle이 아니므로 추적 헤더에서 DBUNIQUENAME 토큰을 사용할 수 없는 경우 @GETENV는 DBUNIQUENAME를 DBNAME의 동의어로 처리합니다. 이 경우 토큰이 없는 헤더를 처음 읽을 때 보고서 파일에 경고 메시지가 기록됩니다.