Oracle GoldenGate 11g官方文件Administrator’s Guide續四

long_small發表於2020-04-16

第四章

 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 <file name>

其中:<f ile name>是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 < <input_file>

其中:<input_file>是一個文字檔案,其中包含要發出的命令(按照發出命令的順序),“ <”字元將檔案透過管道傳送到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 <group name>

其中:<group name>是mgr(用於Manager程式)或要為其建立檔案的Extract或Replicat組的名稱。 抽取或複製引數檔案的名稱必須與程式組的名稱匹配。

以下內容為名為extora的Extract組建立或編輯引數檔案。

EDIT PARAMS extora

以下內容為Manager程式建立或編輯引數檔案。

EDIT PARAMS MGR

3.使用編輯器的編輯功能,輸入要描述此檔案的儘可能多的註釋行,並確保每個註釋行前面都有兩個連字元(--).

4.在非註釋行上,輸入Oracle GoldenGate引數,為每個引數語句開始一個新行。

Oracle GoldenGate引數具有以下語法

<PARAMETER> <argument> [, <option>] [&]

其中:<PARAMETER>是引數的名稱。

❍<argument>是該引數的必需引數。 一些引數帶有引數,而其他則沒有。 如下例所示,用逗號分隔所有引數:

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

❍[,<option>]是可選引數。

❍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} <group name>

Oracle GoldenGate稽核語法並將結果寫到報告檔案或螢幕中。 然後該過程停止。 有關報告檔案的更多資訊,請參見第17章。

3.執行以下任一操作:

❍如果語法正確,請在開始處理資料之前,刪除CHECKPARAMS引數。

❍如果語法錯誤,請根據報告中的發現進行更正。 如果需要,您可以執行另一個測試以驗證更改。 在開始處理資料之前,請刪除CHECKPARAMS。


檢視引數檔案

您可以直接從作業系統的shell命令檢視引數檔案,也可以從GGSCI使用者介面檢視它。 要從GGSCI檢視檔案,請使用VIEW PARAMS命令。

VIEW PARAMS <group name>

其中:<group name>是mgr(對於Manager)或與引數檔案關聯的Extract或Replicat組的名稱。

警告請勿使用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} <group name>

2.透過使用文字編輯器或GGSCI中的EDIT PARAMS命令開啟引數檔案。

EDIT PARAMS mgr

3.進行編輯,然後儲存檔案。

4.啟動該過程(如果在Windows群集中啟動Manager,則使用群集管理器)。

START {EXTRACT | REPLICAT | MANAGER} <group name>


簡化引數檔案的建立

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 <xxx>,因此前面的結果產生以下結果。 下面說明了這一點:

● 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。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25846553/viewspace-2686289/,如需轉載,請註明出處,否則將追究法律責任。

相關文章