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.
Ещё по этой СУБД
- ORA-00494enqueue held for too long by 'inst N, osid M'
- ORA-04021timeout occurred while waiting to lock object
- ORA-04061existing state of package/procedure has been invalidated
- ORA-08176consistent read failure; rollback data not available
- ORA-00020maximum number of processes (N) exceeded
- ORA-01113file N needs media recovery
- ORA-02393exceeded call limit on CPU usage