Oracle
 sql >> Database >  >> RDS >> Oracle

Cercando di capire la lunghezza massima di Rowid in Oracle

Un ROWID fisico ha una dimensione fissa in una determinata versione di Oracle, non dipende dal numero di righe in una tabella. È costituito dal numero del file di dati, dal numero del blocco all'interno di questo file e dal numero della riga all'interno di questo blocco. Pertanto è unico nell'intero database e consente l'accesso diretto al blocco e alla riga senza ulteriori ricerche.

Poiché le cose nel mondo IT continuano a crescere, è lecito ritenere che il formato cambierà in futuro.

Oltre al volume ci sono anche modifiche strutturali, come l'avvento dei tablespace trasportabili, che hanno reso necessario memorizzare il numero dell'oggetto (=numero interno della tabella/partizione/sottoparte) all'interno del ROWID.

O l'avvento delle tabelle organizzate Index (menzionate da @ibre5041), che sembrano una tabella, ma in realtà sono solo un indice senza un tale indirizzo fisico (perché le cose si muovono costantemente in un indice). Ciò ha reso necessario l'introduzione di UROWID in grado di memorizzare ROWID fisici e basati su indici.

Tieni presente che un ROWID può cambiare, ad esempio se la riga si sposta da una partizione di tabella a un'altra o se la tabella viene deframmentata per riempire i buchi lasciati da molti DELETE.