Уведомление об изменении базы данных Oracle

#java #oracle #spring-boot

#Oracle #oracle11g

Вопрос:

Я новичок в DCN, могу ли я использовать его для обнаружения обновлений столбца в моей таблице вместе со вставками в этой таблице? Я имею в виду это

Ответ №1:

Да, вы можете — изменить уведомления, сделанные для этого. Вам необходимо зарегистрировать прослушиватель CN с запросом для просмотра (это может быть целая таблица select * from your_table или ее часть select column1 from your_table where column2='xxx' ) и функцией обратного вызова. Вы должны понимать, что это асинхронный механизм, изменения будут обнаружены не сразу, а через некоторое время. Ссылка на вашу документацию показывает, как это реализовать с помощью JDBC. Прочитайте это, если вы хотите использовать Oracle PL / SQL для этого.

Комментарии:

1. Спасибо! Какова задержка уведомления об изменениях? Также для измененного выше оператора select ‘DCN_QUERY_CHANGE_NOTIFICATION’ должно быть true, верно?

2. Также можете ли вы прокомментировать, какой подход лучше использовать с точки зрения производительности, используя только запрос или с помощью pl-sql? Таблица обслуживает данные с обновлениями не более 5 тыс. в минуту.

3. В моей практике это было 1-2 секунды. Как я понял для JDBC, это должно быть правдой. Но не уверен. Для этого я использовал PL SQL. Что вы имеете в виду, сообщая о производительности, используя только запрос или с помощью pl-sql? Что такое запрос? P.S. Вы также можете использовать обычные триггеры Oracle для обнаружения операций DML.

4. Exception in thread "Thread-4" java.lang.IndexOutOfBoundsException at java.nio.Buffer.checkIndex(Buffer.java:540) at java.nio.HeapByteBuffer.get(HeapByteBuffer.java:139) at oracle.jdbc.driver.NTFConnection.unmarshalOneNSPacket(NTFConnection.java:334) at oracle.jdbc.driver.NTFConnection.run(NTFConnection.java:182)

5. Я получаю это исключение очень часто, поэтому я подумал, что это проблемы с используемым мной методом, какое-либо решение по этому поводу?