Отладка и troubleshooting GoldenGate: showsyntax
Автор статьи: Александр Рындин
При настройке репликации периодически приходится сталкиваться с ситуацией, когда процесс Replicat в GoldenGate валится по SQL-ошибке. Причин может быть много: изначально рассинхронизированные базы, отсутствие значений каких-то полей в trail-файле, лишние ограничения целостности и т.д.
Первым уровнем troubleshooting становится просмотр журналов, затем смотрим в discard-файл – там есть запись с которой возникают проблемы. Кстати, в этот файл попадают несколько записей из транзакции – проблемная запись обычно первая. Когда этот уровень пройден и по-прежнему непонятно, в чем проблема – остается последний уровень – трассировка SQL.
Делать трассировку непросто, потому как нужно найти сессию GoldenGate в базе, включить трассировку вместе с bind-переменными, обработать файл в tkprof, а затем долго и упорно ковыряться в этой трассировке.
Есть гораздо более простой вариант. Для трассировки мы будем использовать сам GoldenGate. Для этого мы заносим в файл параметров Replicat следующие строки, которые отключат использование bind-переменных и включат показ команд SQL:
NOBINARYCHARS
NODYNSQL
SHOWSYNTAX
NODYNSQL
SHOWSYNTAX
Затем запускаем Replicat следующей командой:
replicat paramfile dirprm/.prm
Replicat заработает в интерактивном режиме и будет выводить каждую команду прежде чем ее исполнять. Когда поймем в чем проблема – прервем работу replicat с помощью Ctrl-C.
Важно! Параметр NOBINARYCHARS является недокументированным и может повлиять на поведение GoldenGate с символьными полями (с VARCHAR2 и CHAR я таких проблем не встречал). Я бы рекомендовал запомнить позицию (EXTSEQ, EXTRBA) Replicat командой INFO REPLICAT replicat_name и после выполнения отладки заново спозиционировать Replicat командой ALTER REPLICAR replcat_name, EXTSEQNO X, EXTRBA Y на ранее сохраненную позицию.