Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Tentando descobrir o comprimento máximo de Rowid no Oracle


Um ROWID físico tem um tamanho fixo em uma determinada versão do Oracle, não depende do número de linhas em uma tabela. Consiste no número do arquivo de dados, o número do bloco dentro deste arquivo e o número da linha dentro deste bloco. Portanto, é único em todo o banco de dados e permite acesso direto ao bloco e linha sem qualquer pesquisa adicional.

À medida que as coisas no mundo de TI continuam a crescer, é seguro assumir que o formato mudará no futuro.

Além do volume há também mudanças estruturais, como o advento dos tablespaces transportáveis, que tornaram necessário armazenar o número do objeto (=número interno da tabela/partição/subpartição) dentro do ROWID.

Ou o advento das tabelas organizadas por índice (mencionadas por @ibre5041), que parecem uma tabela, mas na realidade são apenas um índice sem um endereço físico (porque as coisas estão se movendo constantemente em um índice). Isso tornou necessário introduzir UROWIDs que podem armazenar ROWIDs físicos e baseados em índice.

Esteja ciente de que um ROWID pode mudar, por exemplo, se a linha for movida de uma partição de tabela para outra, ou se a tabela for desfragmentada para preencher as lacunas deixadas por muitos DELETEs.