Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Der Versuch, die maximale Länge von Rowid in Oracle herauszufinden

Eine physische ROWID hat in einer bestimmten Oracle-Version eine feste Größe, sie hängt nicht von der Anzahl der Zeilen in einer Tabelle ab. Sie besteht aus der Nummer der Datendatei, der Nummer des Blocks innerhalb dieser Datei und der Nummer der Zeile innerhalb dieses Blocks. Daher ist es in der gesamten Datenbank einzigartig und ermöglicht den direkten Zugriff auf den Block und die Zeile ohne weitere Suche.

Da die Dinge in der IT-Welt weiter wachsen, ist davon auszugehen, dass sich das Format in Zukunft ändern wird.

Neben dem Volumen gibt es auch strukturelle Änderungen, wie das Aufkommen transportabler Tablespaces, die es notwendig machten, die Objektnummer (=interne Nummer der Tabelle/Partition/Unterpartition) innerhalb der ROWID zu speichern.

Oder das Aufkommen von Index-organisierten Tabellen (erwähnt von @ibre5041), die wie eine Tabelle aussehen, aber in Wirklichkeit nur ein Index ohne eine solche physische Adresse sind (weil sich die Dinge in einem Index ständig bewegen). Dies machte die Einführung von UROWIDs erforderlich, die physische und indexbasierte ROWIDs speichern können.

Bitte beachten Sie, dass sich eine ROWID ändern kann, zum Beispiel wenn die Zeile von einer Tabellenpartition zu einer anderen verschoben wird oder wenn die Tabelle defragmentiert wird, um die Lücken zu füllen, die durch viele DELETEs hinterlassen wurden.