Монитор изменения таблиц Oracle - PullRequest
7 голосов
/ 03 декабря 2008

У меня есть Java-приложение, которое подключено к представлению на удаленной базе данных Oracle.

Кто-нибудь знает способ отслеживания изменений в этой таблице на Java? То есть если есть вставки обновлений и т. д., я бы среагировал.

Ответы [ 2 ]

10 голосов
/ 03 декабря 2008

Посмотрите на Уведомление об изменении Oracle , столь интересная функция Oracle.

Из документации Oracle: "Уведомление об изменении базы данных - это функция, которая позволяет клиентским приложениям регистрировать запросы в базе данных и получать уведомления в ответ на изменения DML или DDL для объектов, связанных с запросами. Уведомления публикуются базой данных при фиксации транзакции DML или DDL. "

5 голосов
/ 03 декабря 2008

Вы можете поместить триггер INSERT / UPDATE / DELETE на таблицу, чтобы выполнить какое-либо действие, когда в таблицу внесены изменения «data». (в отличие от изменений в структуре таблицы)

Я считаю, что 10g также поддерживает триггеры при просмотре.

но я не уверен, как вы можете уведомить Java-процесс об этом другом, просто опросив.

извините.

Вы могли бы создать какое-то решение, в котором у приложения java есть сервер прослушивания, а база данных отправляет ему сообщение. но это звучит сложно поддерживать.

Джастин Кейв в комментариях предполагает, что вы можете настроить Oracle Streams для отправки записей логических изменений (LCR), на которые приложение Java может подписаться через JMS. Или триггер может записывать записи в расширенную очередь, на которые Java может подписаться через JMS.

вам все равно нужно с осторожностью относиться к переводам Oracle. из-за того, как работают транзакции Oracle, триггер сработает при изменении, но он также может сработать несколько раз ..

и в любом случае Java-приложение не сможет «увидеть» изменения, пока не будет выполнено принятие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...