sql >> Base de Datos >  >> RDS >> Oracle

Tratando de averiguar la longitud máxima de Rowid en Oracle

Un ROWID físico tiene un tamaño fijo en una determinada versión de Oracle, no depende del número de filas de una tabla. Consiste en el número del archivo de datos, el número del bloque dentro de este archivo y el número de la fila dentro de este bloque. Por lo tanto, es único en toda la base de datos y permite el acceso directo al bloque y la fila sin más búsquedas.

A medida que las cosas en el mundo de TI continúan creciendo, es seguro asumir que el formato cambiará en el futuro.

Además del volumen, también hay cambios estructurales, como el advenimiento de los tablespaces transportables, que hicieron necesario almacenar el número de objeto (=número interno de la tabla/partición/subpartición) dentro de ROWID.

O el advenimiento de las tablas organizadas de índice (mencionadas por @ibre5041), que parecen una tabla, pero en realidad son solo un índice sin tal dirección física (porque las cosas se mueven constantemente en un índice). Esto hizo necesario introducir UROWID que pueden almacenar ROWID físicos y basados ​​en índices.

Tenga en cuenta que un ROWID puede cambiar, por ejemplo, si la fila se mueve de una partición de la tabla a otra, o si la tabla se desfragmenta para llenar los huecos que dejan muchas ELIMINACIONES.