В кластере Oracle sysdate всегда будет давать последовательный ответ?
-
06-07-2019 - |
Вопрос
В кластере Oracle (более одного компьютера, взаимодействующего для обслуживания одной базы данных) будет " sysdate " функция всегда возвращает последовательный ответ? Даже если часы операционной системы сервера сообщают о несовместимых значениях?
Решение
Я бы сильно подозревал, что SYSDATE также связан с ОС. Будьте очень внимательны к причине, по которой вам нужно его использовать. Если есть какая-либо логика, которая реализует пошаговое отслеживание событий (например, вы выполняете пошаговый экспорт), и вы должны убедиться, что ни один элемент не пропущен, а также нет дублирования, основывайте отслеживание на последовательных идентификаторах, а не на SYSDATE.
На самом деле, это верно даже для некластерных систем, поскольку иногда SYSDATE может меняться (экономия времени, ошибки системного администратора ...).
Другие советы
SYSDATE относится к узлу ОС; если он гарантированно корректен во всем кластере, то узлы будут синхронизироваться каждый раз, когда вы вызываете SYSDATE. В кластерной среде упорядоченные последовательности дороги; лучше избегать, если это вообще возможно. Упорядоченная последовательность гарантирует вам уникальность и порядок - однако вы все равно можете получить пробелы, если обработка не удалась после выбора из последовательности и до совершения транзакции.
Мы используем несколько обходных путей:
<Ол>Где заказано последовательность требуется, и там может пробелы - используйте упорядоченную последовательность (старайтесь избегать в кластере среда как "кэш" не помогает)
Где упорядоченная последовательность требуется - но не может быть пробелов - у нас есть собственная таблица последовательностей, заблокировать запись, получить номер и затем держите запись заблокированной до пользователь фиксирует; это приведет к все остальные пытаются получить то же самое последовательность, чтобы ждать, пока пользователь сделка полностью совершена - по возможности избегайте этого.
Используйте NTP для синхронизации времени на всех ваших серверах (Oracle и других) и убедитесь, что этого не произойдет. Несовместимые системные часы - это путь к катастрофе.
Я бы предположил , что sysdate вернет противоречивые результаты в сценарии, который вы описываете.
Я потратил (немного) времени на поиск ответа на этот вопрос, но не смог его найти, но, учитывая, что sysdate просто возвращает дату / время из операционной системы, я подозреваю, что dmitriy правильный. р>