ORA-01466: unable to read data - table definition has changed (lecture des données impossible : la définition de la table a changé)
OracleQue signifie cette erreur ?
Une requête lisant des données d'un instant passé (Flashback Query, AS OF ou lecture cohérente) a échoué car la définition de la table (DDL) a changé entre l'instant passé interrogé et maintenant. Oracle ne peut pas lire en toute sécurité les données de cet instant avec la définition actuelle.
Cause
Un DDL (ajout/suppression de colonne, changement de type) a été appliqué à la table après l'horodatage visé par la requête Flashback/AS OF. Par ailleurs, des écarts d'horloge entre client et serveur ou des requêtes sur un passé très récent (quelques secondes) peuvent lever cette erreur en raison de la résolution SCN/temps.
Comment la corriger
Exécutez la requête flashback sur un instant/SCN antérieur au changement DDL de la table. Lorsque c'est possible, utilisez un SCN exact plutôt qu'un horodatage (AS OF SCN). Pour les requêtes sur un passé très récent, reculez de quelques secondes. Si un accès historique permanent est nécessaire, envisagez une conception avec versionnement ou table d'archive plutôt que du DDL.
Autres entrées pour ce moteur
- ORA-00494enqueue held for too long by 'inst N, osid M' (enqueue détenu trop longtemps par 'inst N, osid M')
- ORA-04021timeout occurred while waiting to lock object (timeout en attendant le verrouillage de l'objet)
- ORA-04061existing state of package/procedure has been invalidated (l'état existant du package/de la procédure a été invalidé)
- ORA-08176consistent read failure; rollback data not available (échec de lecture cohérente ; données de rollback indisponibles)
- ORA-00020maximum number of processes (N) exceeded (nombre maximal de processus (N) dépassé)
- ORA-01113file N needs media recovery (le fichier N nécessite une media recovery)
- ORA-02393exceeded call limit on CPU usage (limite d'utilisation CPU par appel dépassée)