Utilizzo di ERCALLBACK

ERCALLBACK è la funzione di user exit di base per Oracle GoldenGate. Viene utilizzato per estrarre il contesto del record nell'uscita utente. È come un pacchetto che contiene più funzioni individuali al suo interno. È possibile richiamare queste funzioni e ottenere i valori restituiti. Ad esempio, è possibile chiamare funzioni come GET_BEFORE_AFTER_IND o GET_COLUMN_VALUE_FROM_NAME. Queste funzioni sono denominate function_code.

Sintassi

ERCALLBACK (<function_code>, <buffer>, <result_code> );

<function_code>

Funzione che deve essere eseguita dalla routine di callback. La routine di callback dell'utente si comporta in modo diverso in base al codice funzione passato alla routine di callback. Mentre alcune funzioni possono essere utilizzate sia per Extract che per Replicat, la validità della funzione in un processo o nell'altro dipende dai parametri di input impostati per tale funzione durante la routine di callback. Per una descrizione completa dei codici funzione disponibili, vedere Codici funzione.

<buffer>

Puntatore vuoto a un buffer contenente una struttura predefinita associata al codice funzione specificato.

<result_code>

Stato della funzione eseguita dalla routine di callback. Il codice risultato restituito dalla routine di callback indica se la funzione di callback è riuscita o meno. Un codice risultato può essere uno dei valori della Tabella 4-4.

Tabella 4 Codici risultato

Codice Descrizione
EXIT_FN_RET_BAD_COLUMN_DATA Sono stati rilevati dati non validi durante il recupero o l'impostazione dei dati della colonna.
EXIT_FN_RET_BAD_DATE_TIME Una colonna of di tipo data, ora o intervallo contiene un valore di data o ora non valido.
EXIT_FN_RET_BAD_NUMERIC_VALUE Un tipo numerico di colonna contiene un valore numerico non valido.
EXIT_FN_RET_COLUMN_NOT_FOUND Colonna non trovata in un record di aggiornamento compresso (aggiornamento eseguito da un database che registra solo i valori modificati).
EXIT_FN_RET_ENV_NOT_FOUND Impossibile trovare il valore di ambiente specificato nel record.
EXIT_FN_RET_EXCEEDED_MAX_LENGTH Impossibile recuperare i metadati perché il nome della tabella o della colonna non rientra nel buffer allocato.
EXIT_FN_RET_FETCH_ERROR Impossibile recuperare il record. Visualizzare il messaggio di errore per visualizzare il motivo.
EXIT_FN_RET_INCOMPLETE_DDL_REC Si è verificato un errore interno durante l'elaborazione del record DDL. Il record è probabilmente incompleto.
EXIT_FN_RET_INVALID_CALLBACK_FNC_CD Alla routine di callback è stato passato un codice funzione di callback non valido.
EXIT_FN_RET_INVALID_COLUMN Nella chiamata alla funzione è stata indicata una colonna inesistente.
EXIT_FN_RET_INVALID_COLUMN_TYPE La routine sta tentando di manipolare un tipo di dati non supportato da Oracle GoldenGate a tale scopo.
EXIT_FN_RET_INVALID_CONTEXT La funzione di callback è stata richiamata in un momento non corretto.
EXIT_FN_RET_INVALID_PARAM Un parametro non valido è stato passato alla funzione di callback.
EXIT_FN_RET_NO_SRCDB_INSTANCE Impossibile trovare l'istanza del database di origine.
EXIT_FN_RET_NO_TGTDB_INSTANCE Impossibile trovare l'istanza di database di destinazione.
EXIT_FN_RET_NOT_SUPPORTED Questa funzione non è supportata per questo processo.
EXIT_FN_RET_OK Funzione di callback riuscita.
EXIT_FN_RET_SESSION_CS_CNV_ERR È stato restituito un errore ULIB_ERR_INVALID_CHAR_FOUND alla routine di conversione del set di caratteri. Conversione non riuscita.
EXIT_FN_RET_TABLE_NOT_FOUND È stato specificato un nome tabella non valido.
EXIT_FN_RET_TOKEN_NOT_FOUND Impossibile trovare il token utente specificato nel record.

È possibile utilizzare ERCALLBACK per eseguire molte chiamate di funzione diverse. Ad esempio, se si desidera ottenere il nome di una tabella, è possibile utilizzare il comando seguente:

ERCALLBACK (GET_TABLE_NAME, &var, &result_code)

Queste funzioni vengono utilizzate all'interno del codice c per l'uscita utente per eseguire le chiamate per le funzioni fornite nella sezione Codici funzione. Con la combinazione delle diverse chiamate function_code, è possibile eseguire molte attività utilizzando ERCALLBACK, ad esempio:

Ad esempio, se è necessario scrivere un messaggio nel file di report ogni volta che il ritardo nella tabella di heartbeat supera una determinata soglia, è possibile utilizzare la funzione CUSEREXIT. La funzione CUSEREXIT effettuerà quindi numerose chiamate a ERCALLBACK per ottenere i dati della colonna di ritardo, eseguire i calcoli e il confronto e, se il ritardo supera la soglia specificata, scrivere un messaggio nel file di report.