Получить все строки таблицы обновляется через определенное время

Справочная информация: у меня есть таблица оракула, таблица не имеет какого-либо конкретного столбца как метка времени при создании сценария таблицы. Эта таблица может содержать миллионы строк.

Пример:

Employee {Emp_No, Name, Manager,Division, Role, Region}

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

Причина: мне нужно показать моей команде, что эти неоднозначные записи не были обновлены работой, которую мы все подозреваем.

2 ответа

Oracle имеет ORA_ROWSCN Псевдостолбец. Этот столбец возвращает "консервативный номер системного изменения верхней границы (SCN)" последней транзакции, выполненной в строке или блоке данных. Это хорошая оценка того, когда блок или строка были изменены в последний раз.

Если ваша таблица создана с ROWDEPENDENCIES, ORA_ROWSCN возвращает scn для строки. NOROWDEPENDENCIES по умолчанию, в этом случае Oracle отслеживает SCN на уровне блоков.

SCN_TO_TIMESTAMP позволяет конвертировать scn в метку времени, но для старых scn это вызывает исключение.

Приблизительное время обновления можно получить с помощью SCN_TO_TIMESTAMP(ORA_ROWSCN)

Для каждой строки ORA_ROWSCN возвращает консервативный номер системного изменения верхней границы (SCN) самого последнего изменения в строке. Этот псевдостолбец полезен для определения приблизительного времени последнего обновления строки. Это не совсем точно, потому что Oracle отслеживает SCN по транзакциям, зафиксированным для блока, в котором находится строка.

https://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns007.htm

Другие вопросы по тегам