#43
A estrutura de um banco de dados Oracle é complexo e para entender temos que separar por partes, então vamos lá.
Quando se fala em banco de dados, muitos já pensam na informação armazenada, e essa é a última camada que compõem o banco de dados, até chegar nessa camada de informação muitas outras camadas são acessadas, agora vamos resumir cada camada e depois entender o funcionamento do banco de dados.
Camadas:
TABLESPACE (Lógico)
- SEGMENTOS
- EXTENSÕES
- BLOCOS DO ORACLE
TABLESPACE (Físico)
- ARQUIVOS DE DADOS
- BLOCO DO SISTEMA OPERACIONAL
Resumindo Camada TABLESPACE (Lógico):
- Banco de Dados: Essa camada consiste em uma ou mais unidades de armazenamento lógicas denominadas tablespaces.
- Tablespaces: Nessa camada existem dois tipos de estruturas, a lógica e a física. Na forma lógica o tablespace é uma coleção de um ou mais segmentos e fisicamente é uma coleção de um ou mais arquivos de dados (datafiles).
- Segmentos: O Oracle usa o termo segmento para descrever qualquer estrutura que contenha dados. Os segmentos são objetos que ocupam espaço em um banco de dados, então nessa camada temos nossas tabelas, índices, undo, temporários, LOB, entre outros.
- Extensões: Essa camada é responsável por agrupar de forma consecutiva e numerada os blocos do Oracle.
- Blocos do Oracle: Nessa camada, o bloco Oracle consiste em um ou mais blocos do sistema operacional e seu tamanho é definido na criação do tablespace.
Resumindo Camada TABLESPACE (Físico)
- Banco de Dados: É um conjunto de arquivos de dados do sistema operacional.
- Arquivo de Dados (datafiles): Essa camada já foi explicada num post a parte, mas resumindo, um datafile são os arquivos físicos onde ficam armazenadas as informações, os datafiles tem tamanho fixo e são formatados em blocos do sistema operacional.
- Bloco Sistema Operacional: Essa é a camada que armazena as informações do banco de dados.
Explicando o funcionamento:
O Oracle faz uma separação completa da estrutura lógica da estrutura física e o tablespace o responsável por abstrair e manter o relacionamento do armazenamento lógico do armazenamento físico. Na forma lógica o tablespace é uma coleção de um ou mais segmentos e fisicamente é uma coleção de um ou mais arquivos de dados. Os programadores veem somente a estrutura lógica, por exemplo uma tabela, já o DBA já tem acesso as duas estruturas.
Parte lógica:
Um banco de dados Oracle é formado por um ou vários tablespace, um tablespace é formado por um ou vários segmentos, um segmento possui uma ou várias extensões, uma extensão é formatada em blocos oracle, cada bloco oracle aponta para um ou mais blocos do arquivo de dados (datafiles).
Um segmento é composto de vários blocos do Oracle e para gerenciar esses blocos do Oracle eles são agrupados nas extensões. Um segmento cresce de acordo com as novas extensões adicionadas a ele.
A extensão é um espaço usado por um segmento e é responsável por agrupar de forma consecutiva e numerada os blocos do Oracle. Cada extensão tem um tamanho fixo, desta forma um segmento pode ter várias extensões e cada extensão contém um conjunto de blocos oracle. As extensões não precisam pertencer ao mesmo arquivo de dados (datafiles), sendo assim, as extensões podem estar distribuidas em qualquer arquivo de dados pertencente ao tablespace do segmento.
Um Bloco do Oracle tem acesso direto a um ou mais blocos do sistema operacional. O bloco do Oracle é criado de forma dinâmica de acordo com as instruções DML executadas, toda vez que uma nova instrução DML é realizada um novo bloco do oracle é criado e ele aponta para o bloco do sistema operacional onde aquela informação esta armazenada. O conteúdo de um bloco do oracle é composto dos seguintes itens, um cabeçalho de bloco que contém a informação do endereço do bloco de dados do sistema operacional, o diretório da tabela, o diretório da linha e os slots de transação usados quando as transações fazem alterações em linhas do bloco. Esses cabeçalhos dos blocos crescem de cima para baixo.
Parte física:
A estrutura física do tablespace é composta por um ou mais arquivos de dados (datafiles).
Cada datafile só pode pertencer a um tablespace. Em cada datafile pode existir informações de um ou vários segmentos (tabelas) do mesmo tablespace.
Cada datafile é formatado em blocos de tamanho fixo, denominados blocos do sistema operacional.
Os blocos do sistema operacional são os responsáveis por armazenar os dados (informações).
Para facilitar vamos imaginar um banco de dados Oracle no mundo real. Para isso, vamos imaginar dois galpões, um dos galpões esta cheio de caixas (datafiles) de mesmo tamanho, dentro de cada caixa possui partições (blocos do sistema operacional) de mesmo tamanho, muitas dessas caixas tem boa parte de suas partições preechidas com informações diversas, se você entrar nesse galpão você tem acesso a todas as caixas, mas, não consegue ler as informações preechidas em suas partições, pois, as caixas não estão ordenadas ou organizadas, sendo que em algumas caixas existem informações de tipos diferentes. Esse galpão é o nosso tablespace físico.
Dessa forma, você vai para o outro galpão, esse galpão será o nosso tablespace lógico, nele você tem acesso somente aos segmentos (tabelas), mas você consegue consultar de forma clara qualquer informação que esta dentro das caixas do outro galpão. Para consultar essas informações você deve apenas perguntar o que deseja, ao realizar a consulta o tablespace verifica qual segmento você deseja acessar, dentro desses segmentos existe uma ou várias extensões e dentro dessas extensões existem vários blocos do oracle, se essa mesma consulta já foi realizada, então o caminho para a informação já esta armazenada em um dos blocos do oracle, senão, se essa é a primeira vez que essa consulta é realizada, então o tablespace solicita a pesquisa ao outro galpão, assim que o resultado é encontrado, o tablespace cria mais um bloco do oracle dentro da extensão que pertence ao segmento, se essa extensão já estiver cheia, então é criado uma nova extensão dentro do segmento e dentro dessa extensão adicionado o bloco do oracle contendo as informações do bloco do sistema operacional.
Essa imaginação ficou longa, então não sei se mais ajudou que atrapalhou, tentei ser o mais didático possível em mostrar que uma estrutura depende da outra e o tablespace é o único que conhece o relacionamento entre as duas estruturas. As informações desse relacionamento ficam armazenadas dentro do dicionário de dados.
Se tiverem dúvidas realizem um INSERT nos comentários e depois dê um COMMIT que depois respondo.
Abraço e bons estudos.
Comentários
Postar um comentário