在資料庫物件名稱中使用萬用字元
如果特定資料庫支援,您可以在完整物件名稱的任何部分使用萬用字元。這些名稱部分可以是下列名稱:容器、資料庫或目錄名稱、擁有者 (綱要或資料庫名稱),以及表格或順序名稱。如需有關如何支援物件名稱和萬用字元的詳細資訊,請參閱該資料庫的 Oracle GoldenGate 安裝與組態指南。
在適當情況下,Oracle GoldenGate 參數允許使用兩種萬用字元類型,在單一敘述句中指定多個物件:
-
問號 (?) 會取代一個字元。例如,在包含名為
TABn 之表格的綱要中,其中 n 是從 0 到 9,HQ.TAB?的萬用字元設定會傳回HQ.TAB0、HQ.TAB1、HQ.TAB2等等,最多傳回HQ.TAB9,但不傳回其他規格。DB2 LUW 資料庫或 DEFGEN 不支援此萬用字元。此萬用字元只能用來指定TABLE或MAP參數中的來源物件。它無法用來指定TABLE或MAP之TARGET子句中的目標物件。 -
星號 (*) 代表任意數目的字元 (包括零個序列)。例如,
HQ.T*的規格可以傳回HQ.TOTAL、HQ.T123和HQ.T等物件。此萬用字元適用於所有 Oracle GoldenGate 命令和允許萬用字元的參數之資料庫類型。 -
在
TABLE和MAP陳述式中,您只能在來源物件名稱中結合星號和問號萬用字元。
使用來源物件萬用字元的規則
對於來源物件,您可以單獨使用星號或部份名稱。例如,下列來源規格有效:
-
TABLE HQ.*; -
TABLE PDB*.HQ.*; -
MAP HQ.T_*; -
MAP HQ.T_*, TARGET HQ.*;
TABLE、MAP 和 SEQUENCE 參數會將資料庫的區分大小寫和地區設定納入考量,以進行萬用字元解析。對於建立為區分大小寫或不區分大小寫的資料庫,萬用字元會比對確實的名稱和大小寫。例如,如果資料庫區分大小寫,則 SCHEMA.TABLE 會與 SCHEMA.TABLE 比對,Schema.Table 會與 Schema.Table 比對等等。如果資料庫不區分大小寫,則比對不區分大小寫。
對於在同一個資料庫執行處理中同時具有區分大小寫與不區分大小寫的物件名稱的資料庫,使用引號來強制區分大小寫,萬用字元的運作方式會有所不同。單獨用於 TABLE 敘述句中的來源名稱時,星號萬用字元會比對任何字元,無論星號是否在引號內。下列陳述式會產生相同的結果:
TABLE hr.*;
TABLE hr."*";
同樣地,單獨使用的問號萬用字元會比對任何單一字元,無論是否在引號內。下列結果會產生相同的結果:
TABLE hr.?;
TABLE hr."?";
如果問號或星號萬用字元與其他字元搭配使用,則會將區分大小寫套用至非萬用字元,但萬用字元會同時比對區分大小寫與不區分大小寫的名稱。
- 下列
TABLE敘述句會擷取任何以小寫abc開頭的表格名稱。系統會保留引號括住的名稱大小寫,並套用區分大小寫的相符項目。它會擷取包含"abcA"和"abca"的表格名稱,因為萬用字元會同時比對區分大小寫和不區分大小寫的字元。
TABLE hr."abc*";
TABLE hr."abc?";
- 下列
TABLE敘述句會擷取任何以大寫ABC開頭的表格名稱,因為部分名稱不區分大小寫 (沒有引號),而且會由此資料庫以大寫儲存。不過,因為萬用字元同時符合區分大小寫和不區分大小寫的字元,此範例會擷取包含ABCA和"ABCa"的表格名稱。
TABLE hr.abc*;
TABLE hr.abc?;
針對目標物件使用萬用字元的規則
在 MAP 敘述句的 TARGET 子句中使用萬用字元時,目標物件必須存在於目標資料庫中。(異常狀況是在使用 DDL 複製時,允許在建立新綱要及其物件時進行複製。)
對於目標物件,只能使用星號。如果搭配部分名稱使用星號萬用字元,Replicat 會將萬用字元取代為對應來源物件的整個名稱。因此,像是下列情況的規格不正確:
HQ.T
前面的對應會產生不正確的結果,因為目標設定中的萬用字元會被取代為 T_TEST (來源物件的名稱),使整個目標名稱為 T_T_TEST n 。以下說明不正確的結果:
-
HQ.T_TEST1對應至RPT.T_T_TEST1 -
HQ.T_TEST2對應至RPT.T_T_TEST2 -
(相同的樣式會套用至所有其他
HQ.T_TESTn 對應。)
下列範例顯示星號萬用字元的正確用法。
MAP HQ.T_*, TARGET RPT.*;
上述範例會產生下列正確結果:
-
HQ.T_TEST1對應至RPT.T_TEST1 -
HQ.T_TEST2對應至RPT.T_TEST2 -
(相同的樣式會套用至所有其他
HQ.T_TESTn 對應。)
後援名稱對應
如果來源名稱無法對應至目標名稱,則 Oracle GoldenGate 具有後備對應機制。如果目標上找不到完全相符的來源物件 (區分大小寫),Replicat 會嘗試將來源名稱對應至目標上相同名稱 (視資料庫類型而定)。備用名稱對應由 NAMEMATCH 參數控制。如需詳細資訊,請參閱Oracle GoldenGate 的參數與函數參照。
物件名稱中的星號或問號標示為常值
如果物件名稱包含星號或問號,則必須遁離整個名稱,並放置在雙引號內,如下列範例所示:
TABLE HT."\?ABC";
如何解析萬用字元
依預設,當物件名稱是萬用字元時,處理來源物件的第一列時,就會解析該物件。(相反地,明確說明物件的名稱時,會在程序啟動時進行解析)。若要變更解析萬用字元的規則,請使用 WILDCARDRESOLVE 參數。預設值為 DYNAMIC。
從萬用字元規格排除物件
您可以使用 EXCLUDEWILDCARDOBJECTSONLY、CATALOGEXCLUDE、SCHEMAEXCLUDE、MAPEXCLUDE 和 TABLEEXCLUDE 參數,將萬用字元物件選擇的使用與明確的物件排除結合。