Utilizzo di caratteri jolly nei nomi degli oggetti di database
È possibile utilizzare i caratteri jolly per qualsiasi parte di un nome oggetto completamente qualificato, se supportato per il database specifico. Queste parti del nome possono essere le seguenti: il nome del contenitore, del database o del catalogo, il proprietario (nome schema o database) e il nome della tabella o della sequenza. Per informazioni su come sono supportati i nomi degli oggetti e i caratteri jolly, consultare la guida all'installazione e alla configurazione di Oracle GoldenGate per tale database.
Se necessario, i parametri di Oracle GoldenGate consentono l'uso di due tipi di caratteri jolly per specificare più oggetti in un'unica istruzione:
-
Un punto interrogativo (?) sostituisce un carattere. Ad esempio, in uno schema che contiene tabelle denominate
TABn, dove n è compreso tra 0 e 9, una specifica jolly diHQ.TAB?restituisceHQ.TAB0,HQ.TAB1,HQ.TAB2e così via, fino aHQ.TAB9, ma non altri. Questo carattere jolly non è supportato per il database LUW DB2 né per DEFGEN. Questo carattere jolly può essere utilizzato solo per specificare gli oggetti di origine in un parametroTABLEoMAP. Non può essere utilizzato per specificare gli oggetti di destinazione nella clausolaTARGETdiTABLEoMAP. -
Un asterisco (*) rappresenta qualsiasi numero di caratteri (inclusa la sequenza zero). Ad esempio, la specifica di
HQ.T*potrebbe restituire oggetti qualiHQ.TOTAL,HQ.T123eHQ.T. Questo carattere jolly è valido per tutti i tipi di database in tutti i comandi e parametri di Oracle GoldenGate in cui è consentito un carattere jolly. -
Nelle istruzioni
TABLEeMAPè possibile combinare i caratteri jolly asterisco e punto interrogativo solo nei nomi degli oggetti di origine.
Regole per l'utilizzo di caratteri jolly per gli oggetti di origine
Per gli oggetti di origine, è possibile utilizzare l'asterisco da solo o con un nome parziale. Ad esempio, sono valide le seguenti specifiche di origine:
-
TABLE HQ.*; -
TABLE PDB*.HQ.*; -
MAP HQ.T_*; -
MAP HQ.T_*, TARGET HQ.*;
I parametri TABLE, MAP e SEQUENCE tengono conto della distinzione tra maiuscole e minuscole e delle impostazioni nazionali del database per la risoluzione dei caratteri jolly. Per i database creati con distinzione tra maiuscole e minuscole o senza distinzione tra maiuscole e minuscole, il carattere jolly corrisponde al nome e alle maiuscole esatte. Ad esempio, se il database fa distinzione tra maiuscole e minuscole, SCHEMA.TABLE corrisponde a SCHEMA.TABLE, Schema.Table corrisponde a Schema.Table e così via. Se il database non fa distinzione tra maiuscole e minuscole, la corrispondenza non fa distinzione tra maiuscole e minuscole.
Per i database che possono avere nomi di oggetti con distinzione tra maiuscole e minuscole nella stessa istanza di database, con l'uso di virgolette per applicare la distinzione tra maiuscole e minuscole, il carattere jolly funziona in modo diverso. Se utilizzato da solo per un nome di origine in un'istruzione TABLE, un carattere jolly asterisco corrisponde a qualsiasi carattere, indipendentemente dal fatto che l'asterisco sia racchiuso tra virgolette. Le seguenti affermazioni producono gli stessi risultati:
TABLE hr.*;
TABLE hr."*";
Analogamente, un carattere jolly punto interrogativo utilizzato da solo corrisponde a qualsiasi singolo carattere, indipendentemente dal fatto che sia racchiuso tra virgolette. Di seguito vengono riportati gli stessi risultati.
TABLE hr.?;
TABLE hr."?";
Se un punto interrogativo o un carattere jolly asterisco viene utilizzato insieme ad altri caratteri, la distinzione tra maiuscole e minuscole viene applicata ai caratteri non jolly, ma il carattere jolly corrisponde sia ai nomi con distinzione tra maiuscole e minuscole che a quelli con distinzione tra maiuscole e minuscole.
- Le istruzioni
TABLEriportate di seguito acquisiscono qualsiasi nome di tabella che inizi conabcminuscolo. Il nome tra virgolette viene conservato e viene applicata una corrispondenza con distinzione tra maiuscole e minuscole. Acquisisce i nomi di tabella che includono"abcA"e"abca"perché il carattere jolly corrisponde sia ai caratteri con distinzione tra maiuscole e minuscole che ai caratteri senza distinzione tra maiuscole e minuscole.
TABLE hr."abc*";
TABLE hr."abc?";
- Le istruzioni
TABLEriportate di seguito acquisiscono qualsiasi nome di tabella che inizi conABCin maiuscolo, poiché il nome parziale non fa distinzione tra maiuscole (senza virgolette) e viene memorizzato in maiuscolo da questo database. Tuttavia, poiché il carattere jolly corrisponde sia ai caratteri con distinzione tra maiuscole e minuscole che a quelli senza distinzione tra maiuscole e minuscole, in questo esempio vengono acquisiti i nomi delle tabelle che includonoABCAe"ABCa".
TABLE hr.abc*;
TABLE hr.abc?;
Regole per l'utilizzo di caratteri jolly per gli oggetti di destinazione
Quando si utilizzano i caratteri jolly nella clausola TARGET di un'istruzione MAP, gli oggetti di destinazione devono esistere nel database di destinazione. L'eccezione si verifica quando si utilizza la replica DDL, che consente di replicare i nuovi schemi e i relativi oggetti durante la creazione.
Per gli oggetti di destinazione, è possibile utilizzare solo un asterisco. Se viene utilizzato un carattere jolly asterisco con un nome parziale, Replicat sostituisce il carattere jolly con l'intero nome dell'oggetto di origine corrispondente. Di conseguenza, specifiche come quelle riportate di seguito sono errate:
HQ.T
I mapping precedenti producono risultati errati, poiché il carattere jolly nella specifica di destinazione viene sostituito con T_TEST (il nome di un oggetto di origine), rendendo l'intero nome di destinazione T_T_TESTn. Di seguito sono illustrati i risultati errati.
-
HQ.T_TEST1mappa aRPT.T_T_TEST1 -
HQ.T_TEST2mappa aRPT.T_T_TEST2 -
Lo stesso pattern si applica a tutti gli altri mapping
HQ.T_TESTn.
Gli esempi seguenti mostrano l'uso corretto dei caratteri jolly asterisco.
MAP HQ.T_*, TARGET RPT.*;
L'esempio precedente produce i seguenti risultati corretti:
-
HQ.T_TEST1mappa aRPT.T_TEST1 -
HQ.T_TEST2mappa aRPT.T_TEST2 -
Lo stesso pattern si applica a tutti gli altri mapping
HQ.T_TESTn.
Mapping dei nomi di fallback
Oracle GoldenGate dispone di un meccanismo di mapping di fallback nel caso in cui un nome di origine non possa essere mappato a un nome di destinazione. Se non è possibile trovare una corrispondenza esatta nella destinazione per un oggetto di origine con distinzione tra maiuscole e minuscole, Replicat tenta di mappare il nome di origine allo stesso nome in lettere maiuscole o minuscole (a seconda del tipo di database) nella destinazione. Il mapping dei nomi di fallback è controllato dai parametri NAMEMATCH. Per ulteriori informazioni, vedere Riferimento su parametri e funzioni per Oracle GoldenGate.
Asterischi o segni di domanda come valori letterali nei nomi oggetto
Se il nome di un oggetto include un asterisco o un punto interrogativo, l'intero nome deve essere inserito tra virgolette doppie, come nell'esempio seguente:
TABLE HT."\?ABC";
Modalità di risoluzione dei caratteri jolly
Per impostazione predefinita, quando il nome di un oggetto è un carattere jolly, la risoluzione dell'oggetto viene eseguita quando viene elaborata la prima riga dell'oggetto di origine. (Al contrario, quando il nome di un oggetto viene indicato esplicitamente, la sua risoluzione si verifica all'avvio del processo.) Per modificare le regole per la risoluzione dei caratteri jolly, utilizzare il parametro WILDCARDRESOLVE. L'impostazione predefinita è DYNAMIC.
Esclusione di oggetti da una specifica con caratteri jolly
È possibile combinare l'uso della selezione di oggetti con caratteri jolly con l'esclusione esplicita degli oggetti utilizzando i parametri EXCLUDEWILDCARDOBJECTSONLY, CATALOGEXCLUDE, SCHEMAEXCLUDE, MAPEXCLUDE e TABLEEXCLUDE.