AFAIK ROWID dans Oracle représente l'emplacement physique d'un enregistrement dans un fichier de données approprié. Dans quels cas ROWID d'un enregistrement peut-il changer?Qu'est-ce qui peut provoquer le changement d'un Oracle ROWID?
Celui que je connais est UPDATE sur une table partitionnée qui "déplace" l'enregistrement vers une autre partition.
Y a-t-il un autre cas? La plupart de nos blocs de données sont Oracle 10.
En outre, UPDATEing (une valeur précédemment NULL, disons) peut rendre la ligne assez grande pour qu'elle ne puisse plus être hébergée sur sa page actuelle. Dans une application où un grand nombre de UPDATEs se produisent, ce serait probablement assez commun. –
Mike, cela conduirait à enchaîner les rangs. Le ROWID apparent de la ligne ne change pas, mais dans l'enregistrement, vous obtenez un pointeur vers un autre bloc où l'enregistrement complet est placé. –
Il s'agirait d'une migration de ligne, qui se produit lorsque la ligne devient trop grande pour le bloc en cours mais suffisamment grande pour être contenue dans un seul bloc. Le chaînage se produit lorsque la ligne est trop grande pour un seul bloc. Mais vous avez raison, un pointeur sur une ligne migrée est laissé dans le bloc d'origine. –