@GETENV
使用 @GETENV 函數可傳回有關 Oracle GoldenGate 環境的資訊。您可以使用這些資訊作為下列項目的輸入:
-
預存程序或查詢 (使用
SQLEXEC) -
資料欄對應 (
TABLE或MAP的COLMAP選項) -
使用者記號 (以
TABLE的TOKENS選項定義,並透過@TOKEN函數對應至目標資料欄) -
GET_ENV_VALUE使用者結束函數 (請參閱GET_ENV_VALUE)注意:所有語法選項都必須以引號括住,如語法描述中所示。
-
視執行函數的處理作業 (Extract 或 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 格式傳回目前的時間。單位為微秒 (每秒 100 萬)。在 Windows 機器上,值會以零 (0) 填補,因為 Windows 時間戳記的最小單位為毫秒 (100 秒)。例如,以下是一般的欄對應:
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')
「重新輸出」
適用於 Extract。
使用 @GETENV 的 RECSOUTPUT 選項,擷取 Extract 自處理作業開始後寫入歷程檔的目前記錄數目。傳回的值對表格或交易而言不是唯一的,而是對 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 寫入三個歷程檔,則 @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 將來源表格多次寫入單一輸出歷程檔,或者如果 Replicat 具有相同 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'));
使用案例範例
在下列使用案例中,如果來源的所有 DML 都已順利套用至目標,Replicat 會以 EVENTACTIONS 與 SUSPEND 的方式暫停,直到從 GGSCI 使用 SEND REPLICAT 與 RESUME 繼續為止。
Extract 參數檔中使用的 GETENV:
TABLE HR1.HR*;
TABLE HR1.STAT, TOKENS ('env_stats' = @GETENV ('STATS', 'TABLE', &
'HR1.HR*', 'DML'));
Replicat 參數檔中使用的 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 之後的計數。
執行邏輯如下:
-
當 Extract 處理以
STATS或DELTASTATS滿足@GETENV的交易記錄時,表格名稱會與TABLE敘述句中的已解析來源表格進行比對。 -
當 Replicat 處理以
STATS或DELTASTATS滿足@GETENV的歷程檔記錄時,表格名稱會與MAP敘述句之TARGET子句中的已解析目標表格進行比對。
‘TABLE’, ‘<table>’
只針對指定的表格或表格執行 STATS 或 DELTASTATS。如果沒有此選項,會傳回參數檔中 TABLE (Extract) 或 MAP (Replicat) 參數指定之所有表格的計數。
有效的 <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>’
要傳回的統計類型。請參閱使用 FILTER 子句中的統計資料,瞭解在多個 TABLE 或 MAP 敘述句中使用 FILTER 子句中的統計資料時的重要資訊。
‘INSERT’
傳回已處理的 INSERT 作業數目。
‘UPDATE’
傳回已處理的 UPDATE 作業數目。
‘DELETE’
傳回已處理的 DELETE 作業數目。
‘DML’
傳回已處理的 INSERT, UPDATE, 和 DELETE 作業總數。
‘TRUNCATE’
傳回已處理的 TRUNCATE 作業數目。只有當未使用 Oracle GoldenGate DDL 複製時,此變數才會傳回計數。如果正在使用 DDL 複製,此變數會傳回零。
‘DDL’
傳回已處理的 DDL 作業數目,包括 INCLUDE 中指定的 TRUNCATE 和 DDL,以及 DDL 參數的所有範圍 (MAPPED、UNMAPPED、OTHER) 的 EXCLUDE 子句。只有在使用 Oracle GoldenGate DDL 複製時,此變數才會傳回計數。此變數對 'DELTASTATS 無效。
‘CDR_CONFLICTS’
傳回 Replicat 在執行「衝突偵測與解決 (CDR)」功能時偵測到的衝突數目。
特定 <table> 的範例:
@GETENV ('STATS','TABLE','HR.EMP','CDR_CONFLICTS')
Replicat 處理的所有表格範例:
@GETENV ('STATS','CDR_CONFLICTS')
‘CDR_RESOLUTIONS_SUCCEEDED’
傳回 Replicat 在執行「衝突偵測與解決方法 (CDR)」功能時解決的衝突數目。
特定 <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’
傳回交易指標。此值對應至記錄標頭的 TransInd 欄位,可使用 Logdump 公用程式加以檢視。
可能的結果如下:
-
BEGIN(代表 0 的TransInD,交易的第一筆記錄)。 -
MIDDLE(代表 1 的TransInD,交易中間的記錄。) -
END(代表 2 之TransInD,交易的最後一筆記錄)。 -
WHOLE(代表交易中唯一的記錄為 3 之TransInD。)
'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 表示歷程檔是 Oracle GoldenGate 版本,舊於 10.0。這些發行版本不支援檔案標頭。0 值用於與這些 Oracle GoldenGate 版本的回溯相容性。
-
5 表示歷程檔是 Oracle GoldenGate 版本 12.2 或更新版本。
-
6 表示歷程檔是 Oracle GoldenGate 版本 12.3.0.1。
此值會根據 Oracle GoldenGate 版本持續增加,視歷程檔版本而定。
‘CHARSET’
傳回歷程檔的全域字元集。舉例而言:
WCP1252-1
‘CREATETIMESTAMP’
傳回建立歷程檔的時間,以 INT64 中的當地 GMT Julian 時間表示。
‘FILENAME’
傳回歷程檔的名稱。可以是絕對或相對路徑,並具有正斜線或反斜線 (視檔案系統而定)。
‘FILETYPE’
傳回數值,指示歷程檔是單一檔案 (例如為批次執行所建立的檔案) 或循序編號檔案 (為線上連續處理的歷程檔的一部分)。有效值為:
-
0 - EXTFILE -
1 - EXTTRAIL -
2 - UNIFIED and EXTFILE -
3 - UNIFIED and EXTTRAIL
‘FILESEQNO’
傳回歷程檔的序號,不含任何前置零。例如,如果檔案序號是 aa000026,則 FILESEQNO 會傳回 26。
‘FILESIZE’
傳回歷程檔的大小。它會在作用中檔案上傳回 NULL,並在檔案已滿且歷程檔變換時傳回大小值。
‘FIRSTRECCSN’
傳回歷程檔中第一筆記錄的確認序號 (CSN)。在歷程檔完成之前,值為 NULL。
‘LASTRECCSN’
傳回歷程檔中最後一筆記錄的確認序號 (CSN)。在歷程檔完成之前,值為 NULL。
‘FIRSTRECIOTIME’
傳回將第一筆記錄寫入歷程檔的時間。在歷程檔完成之前,值為 NULL。
‘LASTRECIOTIME’
傳回上一筆記錄寫入歷程檔的時間。在歷程檔完成之前,值為 NULL。
‘RECOVERYMODE’
傳回內部 Oracle GoldenGate 使用的復原資訊。通常設為 APPENDMODE。
‘URI’
以下列格式傳回建立歷程檔之處理作業的通用資源 ID:
<host_name>:<dir>:[:<dir>][:<dir_n>]<group_name>
其中:
-
host_name是代管處理之伺服器的名稱 -
dir是 Oracle GoldenGate 安裝路徑的子目錄。 -
group_name是與處理連結的處理群組名稱。
下列範例顯示歷程檔的處理位置與處理方式。這包含先前執行的歷史記錄。
sys1:home:oracle:v9.5:extora
‘URIHISTORY’
傳回目前處理作業之前寫入歷程檔之處理作業的 URI 清單。
-
對於主要 Extract,此欄位是空的。
-
若為資料汲取,此欄位為輸入歷程檔的
URIHistory+URI。
‘GROUPNAME’
傳回與建立歷程檔之 Extract 處理作業關聯的群組名稱。群組名稱是在發出 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>'
適用於適用於適用於 Data Pump Extract 或 Replicat。
使用 @GETENV 的 RECORD 選項,傳回 Oracle GoldenGate 歷程檔中記錄的位置或 Oracle 資料列 ID。
語法
@GETENV ('RECORD', {'TIMESTAMP_PRECISE'|'FILESEQNO'|'FILERBA'|'ROWID'|'RSN'|'TIMESTAMP'})
‘TIMESTAMP_PRECISE’
適用於 Extract 或 Replicat。
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>'
適用於 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 選項來傳回來源交易的相關資訊。此選項對 Extract 處理作業有效,但不適用於泵浦 Extract 和 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 記號在任何平台上都沒有填補零,因為它們從未被評估為相對值。系統只會評估它們是否相符。請注意,在歷程檔中,交易 ID 記號會顯示為 TRANID。
‘CSN’
傳回確認序號 (CSN)。為下列資料庫傳回 CSN 時,不會以零填補:Oracle、Db2 LUW 和 Db2 z/OS。對於所有其他支援的資料庫,CSN 為零填補。
請注意,在歷程檔中,CSN 記號會顯示為 LOGCSN。如需有關 CSN 記號的其他資訊,請參閱 TRANSACTIONID | XID 環境值。
如需有關 CSN 的詳細資訊,請參閱確認序號 (CSN) 。
‘TIMESTAMP’
傳回交易的確認時戳。
‘NAME’
傳回交易名稱 (如果有的話)。
‘USERNAME’
(Oracle) 傳回確認上一個交易之資料庫使用者的 Oracle 使用者名稱。這對泵浦擷取和 (或) Replicat 無效。
‘PLANNAME’
(Db2 z/OS) 傳回目前交易的原始執行計畫名稱。計畫名稱包含在復原日誌記錄的開始單位中。
‘LOGBSN’
傳回交易日誌中的開始序號 (BSN)。BSN 是原生序號,可識別 Extract 記憶體中保留之最舊未確認交易的開頭。例如,若是 Oracle 資料庫,則 BSN 會以系統變更編號 (SCN) 表示。BSN 對應至 Extract 的目前 I/O 檢查點值。使用 @GETENV ('TRANSACTION', 'LOGBSN') 時,可透過 Replicat 從歷程檔取得此值。此值也可以使用 INFO REPLICAT 命令搭配 DETAIL 選項來取得。從 Replicat 取得 BSN 的目的是為了在發生系統故障或檔案系統損毀導致 Extract 檢查點檔案無法使用時,取得 Extract 的復原點。
‘REDOTHREAD’
傳回 RAC 節點擷取的繫線編號;在非 RAC 節點擷取值一律為 1。對於資料汲取和 Replicat,會傳回擷取 RAC 節點所使用的繫線 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 是較佳的替代方案。其次,當歷程檔標頭中沒有 DBUNIQUENAME 記號時 (可能是因為歷程檔是由較舊版本的 Oracle GoldenGate 所產生),或因為資料庫不是 Oracle,@GETENV 會將 DBUNIQUENAME 視為 DBNAME 的同義字。在此情況下,會在第一次讀取沒有記號的標頭時,將警告訊息寫入報表檔案。