Правильный способ записи изменений DML и DDL в указанные таблицы, схемы или всю базу данных Oracle. - PullRequest
0 голосов
/ 22 апреля 2019

Я нашел решение для записи изменений DML и DDL, внесенных в указанные схемы или таблицы Oracle, динамически, что означает, что отслеживаемые схемы и таблицы могут быть изменены во время выполнения приложения.

Одним словом, я собираюсь добиться проверки базы данных Oracle, а не для синхронизации баз данных.

Обновлено

Например, я установил монитор для таблицы test для базы данных db. Я хочу получить все изменения, сделанные в test, такие как удаление / добавление / изменение столбца или вставка / обновление / удаление записей и т. Д. Мне нужно проанализировать и отправить все изменения в блокчейн, например table test added a column field1, это почему я хочу получить весь исполняемый SQL для отслеживаемых таблиц.

Я прочитал документы Oracle о защите данных и потоках.

Защита данных Документ говорит:

SQL Apply (только логические резервные базы данных)

Восстанавливает операторы SQL из повторов, полученных из первичной базы данных, и выполняет операторы SQL для базы данных логического резерва.

Логические резервные базы данных могут быть открыты в режиме чтения / записи, но целевые таблицы, поддерживаемые логической резервной базой данных, открываются в режиме только чтения для целей отчетности (при условии, что защита базы данных была установлена ​​соответствующим образом). SQL Apply позволяет использовать базу данных логического резерва для отчетов о действиях, даже когда применяются операторы SQL.

Stream doc говорит:

Oracle Streams предоставляет два способа неявного захвата изменений базы данных: процессы захвата и синхронный захват. Процесс захвата может фиксировать изменения DML, внесенные в таблицы, схемы или всю базу данных, а также изменения DDL. Синхронный захват может фиксировать изменения DML, сделанные в таблицах. Правила определяют, какие изменения фиксируются процессом захвата или синхронным захватом.

И до этого я уже пытался получить изменение SQL, анализируя журнал повторов с помощью oracle LogMinner, и наконец сделал это.

Поток Oracle кажется наиболее подходящим способом достижения моей цели, но он реализует шаги, которые слишком сложны и выполняются вручную. И на самом деле, существует открытый исходный код для MySQL, опубликованный Alibaba, который называется canal , канал претендует на роль раба, так что MySQL будет сбрасывать binlog и отправлять его в службу канала, а затем канал восстанавливает исходный SQL из binlog.

Я думаю, что резервная база данных Oracle похожа на ведомую MySQL, поэтому тестирование может быть реализовано аналогичным образом. Поэтому я хочу использовать способ защиты данных, но я не хочу сам анализировать журнал повторов, так как для этого требуется привилегия root, чтобы закрыть базу данных и включить некоторые функции, однако в производственной среде у меня есть только пользователь только для чтения. Я хочу использовать логическую резервную базу данных, но проблема в том, что я не понял, как получить Reconstitutes SQL statements, описанный выше.

Итак, есть ли профессионалы, которые могут предложить какие-то предложения?

В любом случае, большое спасибо.

...