Мне нужно сделать C-приложение с OCI, которое извлекает новые строки из базы данных, я имею в виду: строки, добавленные во времени от последнего сеанса до текущего. ora_rowscn не является решением: это значение изменяется для блоков, так что несколько разных строк могут иметь один и тот же SCN.OCI получить только новые строки из Oracle по timestamp
На примере я таблицу с датами:
- 03.05.2015
- 05.05.2015
- 07.05.2015
я могу сделать структуру:
struct Bounds {
Timestamp start, end;
};
03.05.2015 - это начало и 07.05.2015 как конец.
Проверка строк после Bounds.end прост. Но это может быть какая-то задержка или транзакция после моего последнего запроса, и я могу иметь новые значения.
- 03.05.2015
- 04.05.2015
- 05.05.2015
- 06.05.2015
- 07.05.2015
рассчитывать можно обнаружить Эти новые строки по запросу (STARD и END - значения структуры):
select count(*) from logs where log_time > START and log_time < END
Тогда у меня есть 3 ряда и 5 после него. Мое приложение прочитало только чтение.
Так что, похоже, моя проблема трудно решить, когда владелец базы данных не думал о некотором индексировании номера. Я думаю, что если Oracle имеет несколько инкрементных значений для каждой строки для индексирования. –
Даже репликация master-slave не является тривиальной. С каждой версией Oracle предлагает новую технологию для этой цели. Каждый из них должен быть настроен при взаимодействии с администраторами баз данных. «ROW DEPENDENCIES» - это инкрементное значение - если оно было настроено на столе. – ibre5041