Prerequisiti per la configurazione di DDL

Le istruzioni CREATE TABLE AS SELECT (CTAS) includono istruzioni SELECT e istruzioni INSERT che fanno riferimento a un numero qualsiasi di oggetti sottostanti. Per impostazione predefinita, Oracle GoldenGate ottiene i dati per la clausola AS SELECT dal database di destinazione. È possibile forzare l'operazione CTAS per mantenere gli inserti originali utilizzando questo parametro.

Nota:

Per questo motivo, le tabelle XMLType Oracle create da un'istruzione CTAS (CREATE TABLE AS SELECT) non possono essere supportate. Per le tabelle XMLType, gli ID oggetto riga devono corrispondere tra origine e destinazione, che non possono essere gestiti in questo scenario. Le tabelle XMLType create da un'istruzione CTAS vuota (che non inserisce dati nella nuova tabella) possono essere gestite correttamente.

Inoltre, è possibile utilizzare il parametro GETCTASDML che consente a CTAS di riprodurre gli inserti del CTAS preservando gli OID durante la replica. Questo parametro è supportato solo con Integrated Dictionary e qualsiasi Replicat a valle deve essere 12.1.2.1 o superiore per utilizzare il trail altrimenti potrebbe verificarsi una divergenza.

Gli oggetti nella clausola AS SELECT devono esistere nel database di destinazione e i relativi nomi devono essere identici a quelli nell'origine.

In un'istruzione MAP, Oracle GoldenGate mappa solo il nome della nuova tabella (CREATE TABLE name) alla specifica TARGET, ma non mappa i nomi degli oggetti di base dalla clausola AS SELECT. Potrebbero esserci dipendenze da quegli oggetti che potrebbero causare incongruenze nei dati se i nomi fossero stati convertiti nella specifica TARGET.

Di seguito è riportato un esempio di istruzione CREATE TABLE AS SELECT nell'origine e la relativa replica nella destinazione da parte di Oracle GoldenGate.

CREATE TABLE a.tab1 AS SELECT * FROM a.tab2;

L'istruzione MAP per Replicat è la seguente:

MAP a.tab*, TARGET a.x*;

L'istruzione DDL di destinazione applicata da Replicat è la seguente:

CREATE TABLE a.xtab1 AS SELECT * FROM a.tab2;

Il nome della tabella nella clausola AS SELECT * FROM rimane invariato rispetto all'origine: tab2 (anziché xtab2).

Per mantenere coerenti i dati negli oggetti di base sull'origine e sulla destinazione, è possibile configurarli per la replica dei dati da parte di Oracle GoldenGate. Nell'esempio precedente, è possibile utilizzare le seguenti istruzioni per soddisfare questo requisito:

Origine

TABLE a.tab*;

Destinazione

MAPEXCLUDE a.tab2
MAP a.tab*, TARGET a.x*;
MAP a.tab2, TARGET a.tab2;

Vedere Identificazione corretta dei nomi oggetto non qualificati in DDL.