DBAtlas · Атлас эксплуатации баз данных

ORA-01466: unable to read data - table definition has changed

Oracle

Что это значит?

Запрос, читающий данные на прошлый момент времени (Flashback Query, AS OF или согласованное чтение), завершился ошибкой, так как определение таблицы (DDL) изменилось между запрошенным моментом в прошлом и текущим. Oracle не может безопасно прочитать данные на тот момент с текущим определением.

Почему возникает?

После метки времени, на которую нацелен запрос Flashback/AS OF, к таблице был применён DDL (добавление/удаление столбца, изменение типа). Кроме того, расхождение часов клиента и сервера или запросы к совсем недавнему прошлому (несколько секунд) могут вызвать эту ошибку из-за разрешения SCN/времени.

Как исправить

Выполняйте flashback-запрос на момент/SCN до изменения DDL таблицы. По возможности используйте точный SCN вместо метки времени (AS OF SCN). Для запросов к совсем недавнему прошлому отступите на несколько секунд назад. Если нужен постоянный доступ к истории, рассмотрите версионирование или проект с архивной таблицей вместо DDL.

Открыть в DBAtlas →

Ещё по этой СУБД