SQLEXEC

Gültig für

Extrakt und Replicat

Beschreibung

Verwenden Sie den Parameter SQLEXEC, um eine Stored Procedure, Abfrage oder einen Datenbankbefehl im Kontext der Oracle GoldenGate-Verarbeitung auszuführen. Mit SQLEXEC kann Oracle GoldenGate direkt mit der Datenbank kommunizieren, um alle von der Datenbank unterstützten Aufgaben auszuführen. Diese Arbeit kann Teil des Synchronisierungsprozesses sein, z. B. das Abrufen von Werten für die Spaltenkonvertierung, oder sie kann unabhängig vom Extrahieren oder Replizieren von Daten sein, z. B. das Ausführen einer gespeicherten Prozedur, die eine Aktion innerhalb der Datenbank ausführt.

Hinweis: SQLEXEC bietet minimale Globalisierungsunterstützung. Um SQLEXEC in der Capture-Parameterdatei des Source Capture-Prozesses zu verwenden, stellen Sie sicher, dass der Clientzeichensatz in der .prm-Quelldatei entweder identisch oder eine Obermenge des Zeichensatzes der Quelldatenbank ist.

Die SQLEXEC sieht wie folgt aus:

Hinweis: Der Parameter SQLEXECONBEFOREIMAGE unterstützt die Ausführung von SQLEXEC für Before Image-Datensätze.

Hinweis: Der Parameter SQLEXECONBEFOREIMAGE wird im PK-Update- oder Unified Update-Datensatz ignoriert, wenn der Typ EXEC TRANSACTION, SOURCEROW oder ONCE ist.

Eigenständige SQLEXEC

Ein Standalone-Parameter SQLEXEC ist ein Parameter, der auf Root-Ebene einer Parameterdatei verwendet wird und unabhängig von einem Parameter TABLE oder MAP agiert. Im Folgenden finden Sie Richtlinien für die Verwendung eines Standalone-Parameters SQLEXEC.

Weitere Informationen zur Verwendung von Standalone SQLEXEC

Weitere Informationen zur Verwendung von SQLEXEC finden Sie unter Befehle, Stored Procedures und Abfragen mit SQLEXEC ausführen.

Syntax für Standalone SQLEXEC

SQLEXEC
{'call <procedure_name>()' | '<SQL_query>' | '<database_command>'}
[EVERY <n> {SECONDS | MINUTES | HOURS | DAYS}]
[ONEXIT]
[, THREADS (<threadID>[, <threadID>][, ...][, <thread_range>[, <thread_range>][, ...])]

'aufrufen <procedure_name ()'>

Gibt den Namen einer auszuführenden Stored Procedure an. Schließen Sie die Anweisung in einfache Anführungszeichen ein. Das Schlüsselwort call ist erforderlich. Im Folgenden finden Sie ein Beispiel für die Ausführung einer Prozedur mit Standalone-SQLEXEC:

SQLEXEC 'call prc_job_count ()'

<'SQL_query'>

Gibt den Namen einer auszuführenden Abfrage an. Schließen Sie die Abfrage in einfache Anführungszeichen ein. Geben Sie Objektnamen mit Beachtung der Groß-/Kleinschreibung in dem Format an, das für die Datenbank erforderlich ist. Im Folgenden finden Sie ein Beispiel für die Ausführung einer Abfrage mit Standalone-SQLEXEC:

SQLEXEC ' select x from dual '

Verwenden Sie für eine mehrzeilige Abfrage die einfachen Anführungszeichen in jeder Zeile. Um optimale Ergebnisse zu erzielen, geben Sie nach jedem Anfangsanführungszeichen und vor jedem Endanführungszeichen (oder mindestens vor jedem Endanführungszeichen) ein Leerzeichen ein.

<'database_command'>

Führt einen Datenbankbefehl aus. Im Folgenden finden Sie ein Beispiel für die Ausführung eines Datenbankbefehls mit Standalone SQLEXEC:

SQLEXEC 'SET TRIGGERS OFF'

EVERY <n> {SECONDS | MINUTES | HOURS | DAYS}

Führt dazu, dass eine gespeicherte Standalone-Prozedur oder -Abfrage in einem definierten Intervall ausgeführt wird. Beispiel:

SQLEXEC 'call prc_job_count ()' EVERY 30 SECONDS

Das Intervall muss eine ganze positive Ganzzahl sein.

ONEXIT

Führt die SQL-Anweisung aus, wenn der Extract- oder Replicat-Prozess ordnungsgemäß gestoppt wird. Beispiel:

SQLEXEC 'call prc_job_count ()' ONEXIT

THREADS (<threadID>[, <threadID>][, ...][, <thread_range>[, <thread_range>][, ...])

Führt SQLEXEC nur für den bzw. die angegebenen Threads eines koordinierten Replicats aus.

<threadID>[, <threadID>][, ...]

Gibt eine Thread-ID oder eine kommagetrennte Liste mit Threads im Format threadID, threadID, threadID an.

[, <thread_range>[, <thread_range>][, ...]

Gibt einen Threadbereich in Form von threadIDlow-threadIDhigh oder einer durch Komma getrennten Liste von Bereichen im Format von threadIDlow-threadIDhigh, threadIDlow-threadIDhigh an.

Eine Kombination aus diesen Formaten ist ebenfalls zulässig, wie threadID, threadID, threadIDlow-threadIDhigh.

Wenn keine THREADS-Klausel verwendet wird, wird die SQL von allen Threads ausgeführt, die mit dem Befehl ADD REPLICAT für diese Replicat-Gruppe konfiguriert wurden. Wenn die SQL jedoch die Kriterien für eine Sperrentransaktion erfüllt, wird die gesamte SQLEXEC-Anweisung unabhängig von der tatsächlichen Threadzuordnung von Thread 0 verarbeitet.

SQLEXEC in einem TABLE- oder MAP-Parameter

Mit einem Parameter SQLEXEC in einem Parameter TABLE oder MAP kann eine Stored Procedure oder Abfrage ausgeführt werden, die Parameter akzeptiert oder nicht akzeptiert. Im Folgenden werden SQLEXEC-Abhängigkeiten und -Einschränkungen aufgeführt, wenn sie in einer MAP- oder TABLE-Anweisung verwendet werden:

Syntax für SQLEXEC in TABLE oder MAP

SQLEXEC (
{SPNAME <procedure_name>[, ID <logical_name>] |
   ID <logical_name>, QUERY ' <SQL_query> '}
{, PARAMS [OPTIONAL | REQUIRED] <parameter_name> = {<source_column> | <OGG_function>} |
   NOPARAMS}
[, AFTERFILTER | BEFOREFILTER]
[, ALLPARAMS {OPTIONAL | REQUIRED}]
[, ERROR {IGNORE | REPORT | RAISE | FINAL | FATAL}]
[, EXEC {MAP | ONCE | TRANSACTION | SOURCEROW}][, MAXVARCHARLEN <bytes>]
[, PARAMBUFSIZE <bytes>]
[, TRACE]
[, ...]
[, BEFORE_col1 = @BEFORE(col1),
)

SPNAME <procedure_name>[, ID <logical_name>]

Führt eine Stored Procedure aus.

SPNAME <procedure_name>

Gibt den Namen der auszuführenden Prozedur an.

Das folgende Beispiel zeigt eine einzelne Ausführung einer Stored Procedure namens lookup. In diesem Fall wird der tatsächliche Name der Prozedur verwendet. Ein logischer Name ist nicht erforderlich.

SQLEXEC (SPNAME lookup), PARAMS (param1 = srccol)), &
COLMAP (targcol = lookup.param1);

ID <logical_name>

Definiert einen optionalen logischen Namen für die Prozedur. Beispiel: Logische Namen für eine Prozedur namens lookup können lookup1, lookup2 usw. sein. Verwenden Sie diese Option, um die Prozedur mehrmals innerhalb einer MAP-Anweisung auszuführen. Eine Prozedur kann bis zu 20 Mal pro MAP-Anweisung ausgeführt werden. ID ist nicht erforderlich, wenn Sie eine Prozedur einmal ausführen.

Das folgende Beispiel zeigt die Verwendung der Option ID, um mehrere Ausführungen einer gespeicherten Prozedur zu aktivieren, die Werte aus einer Lookup-Tabelle abruft. Die Werte werden Zielspalten zugeordnet.

SQLEXEC (SPNAME lookup, ID lookup1, &
  PARAMS (long_name = current_residence_state)), &
SQLEXEC (SPNAME lookup, ID lookup2, &
  PARAMS (long_name = birth_state)), &
COLMAP (custid = custid, current_residence_state_long = lookup
1.long_name, & birth_state_long = lookup2.long_name);

`ID , ABFRAGE ' '

Führt eine Abfrage aus.

ID <logical_name>

Definiert einen logischen Namen für die Abfrage. Um Werte aus den Abfrageergebnissen zu extrahieren, ist ein logischer Name erforderlich. <ID logical_name> referenziert die von der Abfrage zurückgegebenen Spaltenwerte.

QUERY '<SQL_query>'

Gibt die SQL-Abfragesyntax an, die für die Datenbank ausgeführt werden soll. Die Abfrage kann entweder Ergebnisse mit einer SELECT-Anweisung zurückgeben oder eine INSERT-, UPDATE- oder DELETE-Anweisung ausführen. Eine SELECT-Anweisung darf nur eine Zeile zurückgeben. Werden mehrere Datensätze zurückgegeben, wird nur der erste Datensatz verarbeitet. Geben Sie keine INTO ...-Klausel für eine SELECT statements.The-Abfrage an. Diese muss eine gültige Standardabfragesprache für die Datenbank sein, für die sie ausgeführt wird. Für die meisten Abfragen sind Platzhalter für Eingabeparameter erforderlich. Wie Parameter in der Abfrage angegeben werden, hängt wie folgt vom Datenbanktyp ab:

'SELECT NAME FROM ACCOUNT WHERE SSN = :SSN AND ACCOUNT = :ACCT'
'SELECT NAME FROM ACCOUNT WHERE SSN = ? AND ACCOUNT = ?'

Die Abfrage muss in einer Zeile in einfachen Anführungszeichen enthalten sein. Für einen Parameternamen für eine Datenbank sind keine Anführungszeichen erforderlich.

Die folgenden Beispiele veranschaulichen die Verwendung einer SQLEXEC-Abfrage für Oracle- und SQL Server-Abfragen.

Oracle-Beispiel:

MAP sales.account, TARGET sales.newacct, &
  SQLEXEC (ID lookup, &
  QUERY 'select desc_col into desc_param from lookup_table &
  where code_col = :code_param', &
  PARAMS (code_param = account_code)), &
  COLMAP (newacct_id = account_id, newacct_val = lookup.desc_param);

SQL Server-Beispiel:

MAP sales.account, TARGET sales.newacct, &
  SQLEXEC (ID lookup, &
  QUERY 'select desc_col into desc_param from lookup_table &
  where code_col = ?', &
  PARAMS (p1 = account_code)), &
  COLMAP (newacct_id = account_id, &
  newacct_val = lookup.desc_param);

PARAMS [OPTIONAL | REQUIRED] <parameter_name> = {<source_column> | <OGG_function>} | NOPARAMS

Definiert, ob die Prozedur oder Abfrage Parameter akzeptiert oder nicht, und ordnet die Parameter, falls ja, der Eingabequelle zu. Sie müssen entweder eine PARAMS-Klausel oder NOPARAMS verwenden.

OPTIONAL REQUIRED

Legt fest, ob die Prozedur oder Abfrage ausgeführt wird, wenn Parameterwerte fehlen.

OPTIONAL gibt an, dass kein Parameterwert für die Ausführung von SQL erforderlich ist. Wenn eine erforderliche Quellspalte im Datenbankvorgang fehlt oder eine Spaltenkonvertierungsfunktion nicht erfolgreich abgeschlossen werden kann, weil eine Quellspalte fehlt, wird die SQL-Anweisung trotzdem ausgeführt. OPTIONAL ist der Standard für alle Datenbanken mit Ausnahme von Oracle. Bei Oracle wird beim Abrufen der Stored Procedure-Definition automatisch ermittelt, ob ein Parameter optional ist.

REQUIRED gibt an, dass ein Parameterwert vorhanden sein muss. Wenn der Parameterwert nicht vorhanden ist, wird die SQL nicht ausgeführt.

<parameter_name> = {<source_column> | <OGG_function>}

Ordnet den Namen eines Parameters einer Spalte oder Funktion zu, die den Input liefert. Die folgenden Datentypen werden von SQLEXEC für Eingabe- und Ausgabeparameter unterstützt.

<parameter_name> ist einer der Folgenden:

SQLEXEC (ID appphone, QUERY ' select per_type from ps_personal_data '
    ' where emplid = :vemplid '
    ' and per_status = 'N' and per_type = 'A' ',
    PARAMS (vemplid = emplid)),
TOKENS (applid = @GETVAL(appphone.per_type));
SQLEXEC (ID appphone, QUERY ' select per_type from ps_personal_data '
    ' where emplid = ? '
    ' and per_status = 'N' and per_type = 'A' ',
    PARAMS (p1 = emplid)),
TOKENS (applid = @GETVAL(appphone.per_type));

<source_column> ist der Name einer Quellspalte, die die Eingabe bereitstellt. Wenn die angegebene Spalte nicht im Log vorhanden ist (da der Datensatz nur die Werte von Spalten enthält, die aktualisiert wurden), geht der Parameter standardmäßig von einem Standardwert aus, der von der Prozedur oder Abfrage für den Parameter angegeben wird.

<OGG_function> ist der Name einer Oracle GoldenGate-Spaltenkonvertierungsfunktion, die zur Angabe der Eingabe ausgeführt wird. Siehe "Funktionen für die Tabellen- und Spaltenzuordnung.

Um Ausgabewerte aus der gespeicherten Prozedur oder Abfrage als Eingabe an eine FILTER- oder COLMAP-Klausel zu übergeben, verwenden Sie die folgende Syntax:

{<procedure_name> | <logical_name>}.<parameter>

Wo:

Die folgenden Beispiele gelten für eine Gruppe von Quell- und Zieltabellen von Oracle und eine Lookup-Tabelle. Diese Beispiele zeigen, wie Parameter für die Tabellen für eine einzelne Instanz einer Stored Procedure und mehrere Instanzen einer Stored Procedure übergeben werden.

Quelltabelle Kunde:

custid                     Number
current_residence_state    Char(2)
birth_state                Char(2)

Zieltabelle cust_extended:

custid                          Number
current_residence_state_long    Varchar(30)
birth_state_long                Varchar(30)

Lookup-Tabelle state_lookup

abbreviation     Char(2)
long_name        Varchar(30)

Das folgende Beispiel zeigt die Verwendung einer Stored Procedure, die einmal ausgeführt wird, um einen Wert aus der Lookup-Tabelle abzurufen. Wenn Datensätze aus der Tabelle cust verarbeitet werden, führt Oracle GoldenGate die gespeicherte Prozedur lookup aus, bevor die Spaltenzuordnung ausgeführt wird. Der Parameter long_name in der Prozedur akzeptiert Eingaben aus dem column.The-Wert der birth_state-Quelle. Er wird der Zielspalte birth_state_long in der COLMAP-Anweisung zugeordnet.

MAP sales.cust, TARGET sales.cust_extended, &
SQLEXEC (SPNAME lookup, &
PARAMS (long_name = birth_state)), &
COLMAP (custid = custid, &
birth_state_long = lookup.long_name);

Das folgende Beispiel zeigt die Verwendung der Option ID, um mehrere Ausführungen einer gespeicherten Prozedur zu aktivieren, die Werte aus einer Lookup-Tabelle abruft. Die Werte werden Zielspalten zugeordnet.

MAP sales.cust, TARGET sales.cust_extended, &
SQLEXEC (SPNAME lookup, ID lookup1, &
PARAMS (long_name = current_residence_state)), &
SQLEXEC (SPNAME lookup, ID lookup2, &
PARAMS (long_name = birth_state)), &
COLMAP (custid = custid, current_residence_state_long = lookup1.long_name, & birth_state_long = lookup2.long_name);
AFTERFILTER BEFOREFILTER

Geben Sie mit AFTERFILTER und BEFOREFILTER an, wann die Stored Procedure oder Abfrage in Bezug auf die FILTER-Klausel einer MAP-Anweisung ausgeführt werden soll.

AFTERFILTER

Führt dazu, dass die SQL nach der FILTER-Anweisung ausgeführt wird. Auf diese Weise können Sie den Overhead der SQL-Ausführung überspringen, es sei denn, der Filter ist erfolgreich. Dies ist die standardmäßige Einstellung.

BEFOREFILTER

Führt dazu, dass die SQL vor der FILTER-Anweisung ausgeführt wird, damit die Ergebnisse im Filter verwendet werden können.

Im folgenden Beispiel wird BEFOREFILTER verwendet.

SQLEXEC (SPNAME check, NOPARAMS, BEFOREFILTER)
ALLPARAMS [OPTIONAL REQUIRED]

Verwenden Sie ALLPARAMS als globale Regel, die bestimmt, ob alle angegebenen Parameter vorhanden sein müssen, damit die Stored Procedure oder Abfrage ausgeführt werden kann. Regeln für einzelne Parameter, die innerhalb der PARAMS-Klausel eingerichtet wurden, überschreiben die globale Regelliste mit ALLPARAMS.

OPTIONAL

Ermöglicht dem SQL die Ausführung, ob alle Parameter vorhanden sind oder nicht. Dies ist die standardmäßige Einstellung.

REQUIRED

Erfordert, dass alle Parameter vorhanden sind, damit SQL ausgeführt werden kann.

Im folgenden Beispiel wird OPTIONAL verwendet.

SQLEXEC (SPNAME lookup,
PARAMS (long_name = birth_state, short_name = state),
ALLPARAMS OPTIONAL)
ERROR {IGNORE REPORT RAISE FINAL FATAL}

Verwenden Sie ERROR, um eine Antwort auf Fehler zu definieren, die mit der gespeicherten Prozedur oder Abfrage verknüpft sind. Ohne explizite Fehlerbehandlung beendet der Oracle GoldenGate-Prozess Fehler. Stellen Sie sicher, dass Ihre Prozeduren Fehler an den Prozess zurückgeben, und geben Sie die Antworten mit ERROR an.

Mit Oracle GoldenGate 21c können Sie mit der Funktion verschiedene Verhaltensweisen basierend auf dem Typ "SQL-Fehler" angeben.

Das folgende Beispiel zeigt einen Abbruch-ER-Prozess, wenn der SQL-Fehlercode 1403 oder 1405 bei der Ausführung der Suche nach gespeicherten Prozeduren ermittelt wird. Alle anderen Fehler werden gemeldet, und die Replikation wird fortgesetzt.

SQLEXEC ( SPNAME lookup,
  PARAMS( long_name = birth_state, short_name = state),
  ERROR REPORT, ERROR FATAL (1403, 1405) );

IGNORE

Führt dazu, dass Oracle GoldenGate alle Fehler ignoriert, die mit der gespeicherten Prozedur oder Abfrage verknüpft sind, und die Verarbeitung fortsetzt. Jede resultierende Parameterextraktion führt zu "Spalte fehlt"-Bedingungen. Dies ist die standardmäßige Einstellung.

REPORT

Stellt sicher, dass alle mit der gespeicherten Prozedur oder Abfrage verknüpften Fehler der Discard-Datei gemeldet werden. Der Bericht ist nützlich, um die Fehlerursache zu verfolgen. Sie enthält sowohl eine Fehlerbeschreibung als auch den Wert der Parameter, die an und von der Prozedur oder Abfrage übergeben werden. Oracle GoldenGate setzt die Verarbeitung fort, nachdem der Fehler gemeldet wurde.

RAISE

Behandelt Fehler gemäß Regeln, die von einem Parameter REPERROR festgelegt wurden. Oracle GoldenGate verarbeitet weitere Stored Procedures oder Abfragen, die mit der aktuellen MAP-Anweisung verknüpft sind, bevor der Fehler verarbeitet wird.

FINAL

ähnelt RAISE. Wenn jedoch ein mit einer Prozedur oder Abfrage verknüpfter Fehler auftritt, werden die verbleibenden gespeicherten Prozeduren und Abfragen umgangen. Fehlerverarbeitung wird unmittelbar nach dem Fehler aufgerufen.

FATAL

Führt dazu, dass Oracle GoldenGate sofort abgebrochen wird, wenn ein Fehler im Zusammenhang mit einer Prozedur oder Abfrage auftritt.

EXEC {MAP ONCE TRANSACTION SOURCEROW}

Mit EXEC steuern Sie die Häufigkeit, mit der eine Stored Procedure oder Abfrage in einer MAP-Anweisung ausgeführt wird und wie lange die Ergebnisse als gültig betrachtet werden, wenn Ausgabeparameter extrahiert werden.

MAP

Führt die Prozedur oder Abfrage einmal für jede Quell-Ziel-Tabellenzuordnung aus, für die sie angegeben ist. Wenn Sie MAP verwenden, werden die Ergebnisse für alle nachfolgenden Zuordnungen ungültig, die dieselbe Quelltabelle aufweisen. MAP ist die Standardeinstellung.

Das folgende Beispiel zeigt, dass der Standardwert von MAP nicht korrekt verwendet wird. Da MAP der Standardwert ist, muss er nicht explizit in der SQLEXEC-Anweisung aufgeführt werden. In diesem Beispiel wird eine Quelltabelle in separaten MAP-Parametern zwei verschiedenen Zieltabellen zugeordnet. In diesem Fall sind die Ergebnisse nur für das erste Mapping gültig. Die Ergebnisse der Prozedur lookup sind bis zum Zeitpunkt der Ausführung des zweiten MAP-Parameters abgelaufen, und die zweite MAP führt zu einer Bedingung "Spalte fehlt". Um dies korrekt zu implementieren, damit jede MAP gültige Ergebnisse zurückgibt, muss SOURCEROW verwendet werden.

MAP sales.srctab, TARGET sales.targtab, &
SQLEXEC (SPNAME lookup, PARAMS (param1 = srccol)), &
COLMAP (targcol = lookup.param2);

MAP sales.srctab, TARGET sales.targtab2, &
COLMAP (targcol2 = lookup.param2);

ONCE

Führt die Prozedur oder Abfrage einmal während der Oracle GoldenGate-Ausführung beim ersten Aufruf der zugehörigen MAP-Anweisung aus. Die Ergebnisse bleiben so lange gültig, wie der Prozess ausgeführt wird.

Im Folgenden finden Sie ein Beispiel zur Verwendung von ONCE.

MAP sales.cust, TARGET sales.cust_extended, &
SQLEXEC (SPNAME lookup, PARAMS (long_name = birth_state), EXEC ONCE), &
COLMAP (custid = custid, &
birth_state_long = lookup.long_name);

TRANSACTION

Führt die Prozedur oder Abfrage einmal pro Quelltransaktion aus. Die Ergebnisse bleiben für alle Vorgänge der Transaktion gültig.

Im Folgenden finden Sie ein Beispiel zur Verwendung von TRANSACTION.

MAP sales.cust, TARGET sales.cust_extended, &
SQLEXEC (SPNAME lookup, PARAMS (long_name = birth_state), EXEC TRANSACTION), &
COLMAP (custid = custid, &
birth_state_long = lookup.long_name);

SOURCEROW

Führt die Prozedur oder Abfrage einmal pro Quellzeilenvorgang aus. Verwenden Sie diese Option, wenn Sie eine Quelltabelle mit mehreren Zieltabellen synchronisieren, sodass die Ergebnisse der Prozedur oder Abfrage für jedes Quell-Ziel-Mapping aufgerufen werden.

Im Folgenden finden Sie ein Beispiel zur Verwendung von SOURCEROW. In diesem Fall gibt die zweite Zuordnung einen gültigen Wert zurück, da die Prozedur bei jedem Quellzeilenvorgang ausgeführt wird.

MAP sales.srctab, TARGET sales.targtab, &
SQLEXEC (SPNAME lookup, PARAMS (param1 = srccol), EXEC SOURCEROW), &
COLMAP (targcol = lookup.param2);

MAP sales.srctab, TARGET sales.targtab2, &
COLMAP (targcol2 = lookup.param2);

MAXVARCHARLEN <bytes>

Geben Sie mit MAXVARCHARLEN die maximale Bytelänge an, die für den Ausgabewert eines Parameters in einer gespeicherten Prozedur oder Abfrage zugewiesen ist. Nach diesem Maximum werden die Ausgabewerte abgeschnitten. Der Standardwert ist 255 Byte ohne explizite MAXVARCHARLEN-Klausel. Der gültige Wertebereich liegt zwischen 50 und 32767 Byte.

Im folgenden Beispiel wird die Bytelänge der Ausgabewerte auf 100 begrenzt.

MAXVARCHARLEN 100

PARAMBUFSIZE <bytes>

Geben Sie mit PARAMBUFSIZE die maximale Anzahl von Byte an, die für den Speicherpuffer zulässig sind, der SQLEXEC-Parameterinformationen speichert, einschließlich Eingabe- und Ausgabeparameter. Der Standardwert ist 10.000 Byte ohne explizite PARAMBUFSIZE-Klausel. Der gültige Wertebereich liegt zwischen 1000 und 2000000 Byte. Oracle GoldenGate gibt eine Warnung aus, wenn der für Parameter zugewiesene Speicher innerhalb von 500 Byte des Maximums liegt.

Im folgenden Beispiel wird der Puffer auf 15.000 Byte erhöht.

PARAMBUFSIZE 15000
TRACE {ALL ERROR}

Verwenden Sie TRACE, um SQLEXEC-Eingabe- und -Ausgabeparameter in der Berichtsdatei zu protokollieren.

Im Folgenden finden Sie eine Beispielberichtsdatei mit aktiviertem SQLEXEC-Tracing:

Input parameter values...
LMS_TABLE: INTERACTION_ATTR_VALUES
   KEY1: 2818249
  KEY2: 1
Report File:
From Table MASTER.INTERACTION_ATTR_VALUES to MASTER.INTERACTION_ATTR_VALUES:
       #  inserts:      0
       #  updates:      0
       #  deletes:      0
       #  discards:     1

  Stored procedure GGS_INTERACTION_ATTR_VALUES:
       attempts:        2
       successful:      0

ALL

Schreibt die Eingabe- und Ausgabeparameter für jeden Aufruf der Prozedur oder Abfrage in die Berichtsdatei. Dies ist die standardmäßige Einstellung.

ERROR

Die Eingabe- und Ausgabeparameter für jeden Aufruf der Prozedur oder Abfrage werden erst nach einem SQL-Fehler in die Berichtsdatei geschrieben.