Estruturas lógicas de armazenamento

  • Os datafiles do Oracle são agrupados em um ou mais tablespaces;
  • Datafiles são estruturas físicas subdivididas em extents e blocks;
  • Um tablespace pode ser visto como um grupo lógico de datafiles;
  • Em cada tablespace existem estruturas lógicas do banco de dados, como tabelas e índices;
  • O termo “segmento” é utilizado para descrever o espaço físico ocupado por uma tabela (ou outros objetos);
  • O Oracle é dividido em compartimentos para propiciar um controle mais eficiente do uso do espaço em disco.

Tablespaces

Um tablespace do Oracle é um agrupamento lógico de um ou mais datafiles. Um datafile faz parte de um (e somente um) tablespace. A instalação padrão do Oracle 11g cria seis tablespaces, mas o mínimo são apenas dois: SYSTEM e SYSAUX. Estes dois tablespaces são indispensáveis.

O Oracle 11g permite a criação de tablespaces de um tipo especial, chamado tablespace bigfile, que pode ter até 128TB de tamanho.

Se um tablespace for temporário, somente os segmentos gravados no tablespace serão temporários. O tablespace e si é permanente. Tablespaces temporárias são utilizadas para operações de classificação (order by) e para tabelas temporárias, ou seja, que existem apenas durante a sessão do usuário.

Os tablespaces podem ser gerenciados localmente ou gerenciados pelo dicionário. A diferença está no gerenciamento de extents: enquanto um tablespace gerenciado pelo dicionário registra o gerenciamento de extents no dicionário de dados, o tablespace gerenciado localmente armazena um bitmap no cabeçalho de cada datafile pertencente ao tablespace para rastrear a disponibilidade de espaço. O gerenciamento local oferece a grande vantagem de evitar alta concorrência sobre as tabelas do dicionário de dados.

Blocks

Um block (bloco) do banco de dados é a menor unidade de armazenamento no Oracle. O tamanho de um bloco é um número específico de bytes de armazenamento em um determinado tablespace dentro do banco de dados.

O tamanho de bloco é especificado no parâmetro DB_BLOCK_SIZE. Este tamanho geralmente é um número múltiplo do tamanho de bloco do sistema operacional, para um melhor desempenho de I/O.

Extents

Extent (extensão) é o nível seguinte do agrupamento lógico no banco de dados, ou seja, ele consiste em um ou mais blocos do banco de dados. Quando um objeto do banco de dados solicita mais espaço (uma tabela sofrendo um INSERT, por exemplo), o espaço adicionado ao objeto é alocado como um extent.

Segments

Segment (segmento) é um grupo de extensões que forma um objeto do banco de dados. Portanto, um objeto qualquer do banco de dados (uma tabela, ou um índice, por exemplo) tem seus dados armazenados em um segment. Um objeto tem apenas um segmento (que pode crescer de tamanho alocando mais extents), com exceção de objetos particionados ou clusterizados. Uma tabela particionada ou um índice particionado, por exemplo, tem um segmento para cada partição.

Posts relacionados:

OCP 11g – Arquitetura do Banco de Dados: Noções Básicas (parte 1)

OCP 11g – Arquitetura do Banco de Dados: Noções Básicas (parte 2)

OCP 11g – Arquitetura do Banco de Dados: Noções Básicas (parte 3)

OCP 11g – Arquitetura do Banco de Dados: Noções Básicas (parte 4)

 

Referência Bibliográfica

Este post, assim como todos os posts sobre Certificação OCP deste blog, são trechos do livro “OCP Oracle Database 11g – Administração II (Guia do Exame 1Z0-053)”, da editora Bookman – www.bookman.com.br
Recomendo este livro a todos que pretendem estudar para o exame. Meus posts são apenas algumas dicas para quem já está estudando por outros materiais, e por isso exige uma base de conhecimento anterior em cada um dos capitulos. Para uma referência completa de estudos é recomendado a compra do livro correspondente, bem como a documentação oficial da Oracle.