Estruturas lógicas de um banco de dados Oracle

    

    Iniciando meus estudos sobre bancos de dados Oracle, venho aqui compartilhar um pouco do que aprendi. Em linhas gerais, um banco de dados deve ser capaz de armazenar informações de forma permanente, segura e acessível de forma rápida. O banco de dados Oracle é extremamente estável e pode ser usado em ambiente Unix ou Windows. Devido à sua robustez é indicado para trabalhar com grande volume de informações. Este banco de dados é composto por estruturas físicas e lógicas. Neste post falarei sobre as estruturas lógicas. 

Estruturas lógicas

    Segmentos são objetos dos bancos de dados Oracle. Trata-se de unidades lógicas. Todos abaixo são exemplos de segmentos:
  • Tabelas
  • Índices
  • Views
  • Procedures
  • Functions

Os segmentos são armazenados em datablocks (blocos de dados), que são as unidades mínimas de armazenamento. Estes blocos possuem os tamanhos padrão de 2KB, 8KB, 4KB, 16KB ou 32KB. Essa divisão não pode mudar uma vez que foi definida e ajuda a aumentar a performance do banco Oracle. Dependendo da forma como predominará a utilização do banco de dados é recomendável utilizar tamanhos diferentes de datablocks. Para bancos transacionais onde serão executadas mais operações de INSERT, DELETE e UPDATE são recomendados blocos menores pois quanto menor o bloco, mais rápida a gravação. Para bancos analíticos onde predominarão as consultas SELECT, são indicados datablocks maiores, pois quanto maior o bloco, mais rápida a leitura. Caso se trate de um banco híbrido, recomenda-se o tamanho médio.

OLTP = bancos transacionais (INSERT, DELETE e UPDATE), recomendados 2 ou 4KB

OLAP = bancos analíticos (SELECT), recomendados 16 ou 32KB

HIBRIDO = recomendado 8KB

    O conjunto de datablocks forma uma extent, ou seja, ocupa um tamanho (extensão). No que se refere ao armazenamento, os segmentos formam extensões, que não são necessariamente contíguas, mas os blocos de dados que compõe uma extensão, são contíguos. Contíguo significa que são adjacentes.

Em resumo:


    Portanto, ao criar uma tabela (segment), ela ocupa extents, que são compostos por datablocks, ocupando espaço no disco. Essas tabelas apontam para um determinado tablespace. Os tablespaces por sua vez são fisicamente representados por um ou mais arquivos físicos com extensão .dbf que estão no HD. O tamanho máximo de um .dbf é de 32Gb de dados. Na figura abaixo fica um pouco mais claro de entender.

Figura 1 - Ilustração estruturas lógicas banco de dados Oracle

Na figura abaixo, podemos ver os arquivos físicos onde estão os tablespaces. No caso, USERS01.DBF e SYSTEM01.DBF. Temos uma tablespace (que é lógica) alocada em um arquivo DBF (que é físico).

Figura 2 - Arquivos padrão de um banco de dados Oracle

    Destacam-se algumas tablespaces importantes como System e Sysaux que armazenam toda a parte core do banco, ou seja, todo o dicionário de dados é armazenado nessas duas tablespaces. Ambas pertencem ao usuário SYS, que é o dono do banco de dados. Existe também a Tablespace de Undo. Essa tablespace trabalha com a integridade do banco de dados, possibilitando uma leitura consistente. Armazena os dados que não estão ainda comitados. Algumas literaturas também podem chamá-lo como Tablespace de Rollback. A Tablespace Temp é utilizada para auxiliar a memória do Oracle em operações mais pesadas em que não existe mais memória RAM disponível e é necessário utilizar o HD.

    No próximo post vou trazer a continuação falando das estruturas físicas do bando de dados Oracle. Não deixe de comentar! Espero que tenha lhe ajudado. Até a próxima!

Referências:

Mafra, Felipe. O curso completo de banco de dados e SQL, sem mistérios! Disponível em: <https://www.udemy.com/course/bancos-de-dados-relacionais-basico-avancado/>


Comentários

Postagens mais visitadas deste blog

Como utilizar Tag Prefix WinCC Professional

TUTORIAL: Dashboard com dados de uma CPU S7 utilizando comunicação OPC UA

Utilizando interfaces, inversão de controle e injeção de dependências em programação - Um exemplo em C#