Oracle: дата и время загрузки - PullRequest
0 голосов
/ 31 января 2020

Мне нужно извлечь некоторые данные из таблицы Oracle, которая была загружена в определенный день. Есть способ сделать это? Строки не имеют записи даты-времени

Ответы [ 2 ]

0 голосов
/ 31 января 2020

В общем, нет. Вам понадобится столбец date в таблице.

Если загрузка была недавней, вы можете попробовать

select scn_to_timestamp( ora_rowscn ), t.*
  from table t

Однако с этим

* 1008 есть несколько проблем. * Oracle знает только, как преобразовать последние SCN в временные метки (порядка нескольких дней). Возможно, вам потребуется создать новую функцию с именем scn_to_timestamp и обработать исключение, если SCN не может быть преобразован в метку времени. Преобразование SCN в метку времени является приблизительным (должно быть в пределах минута) Если таблица не была построена с rowdependencies (что не является значением по умолчанию), SCN сохраняется на уровне блоков, а не на уровне строк. Таким образом, если ваша загрузка изменила одну строку в блоке, все строки в блоке будут иметь одинаковый обновленный SCN. Если вы можете допустить выбор некоторых строк, которые были загружены ранее, и / или вы знаете, что ваша загрузка выполняет запись только в новые блоки, это может быть менее серьезной проблемой.

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

0 голосов
/ 31 января 2020

Нашел это - ORA_ROWSCN. Нужно выяснить, как преобразовать его в дату (SCN_TO_TIMESTAMP не работает)

...