Pular para o conteúdo principal

Tablespace - Estruturas Lógicas de Banco de Dados - Estruturas de Armazenamento no Oracle


#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

Postagens mais visitadas deste blog

Conhecendo a arquitetura do Banco de Dados Oracle

#15 Vamos focar mais no ambiente de banco de dados mais comum, que é uma instância em um computador, abrindo um banco de dados armazenado em discos locais. Sempre que for mensionado instância, esta se referindo ao banco de dados em funcionamento. Um banco Oracle é composto por duas estruturas, uma lógica e uma física. A estrutura lógica é chamada de instância e composta por estruturas de memória e processos, a sua existência é temporária na memória RAM e CPU e fica ativa enquanto o banco Oracle estiver ligado, se desligar o banco Oracle toda a informação ou vestígios de sua existência será apagado da memória, ao ligar o banco Oracle a instância é carregada novamente na memória. Os processos que compõem a instância trabalham em segundo plano e fica ativo o tempo todo enquanto a instância estiver ativa. A estrutura física é onde fica armazenado as informações, e uma vez criado, ele existe até que o DBA deliberadamente decida exclui-lo. Quando um banco Oracle é iniciado, na me...

O Cache de Buffer do Banco de dados - Estruturas de Memória no Oracle

#21 Vamos conhecer um pouco mais sobre o Cache de Buffer de Dados. O Cache de Buffer de Dados é o local de trabalho do Oracle, é nessa área que ele executa as SQLs. A função dessa área é otimizar e melhorar o desempenho das instruções DML. O maior gargalo de um banco de dados é o I/O dos arquivos em disco. Mas antes de explicar como funciona o Cache de Buffer de Banco de dados, vamos entender rápidamente o que é bloco, desta forma você não fica perdido, os arquivos de dados que contém os registros que são as linhas da tabela, indices e outros objetos de dados são formatados em blocos de tamanho fixo, o DBA pode definir um tamanho para esses blocos ou deixar de forma automática. A quantidade de linhas por bloco é indefinida, pois, as linhas possuem comprimento variável, o comprimento desta linha dependerá do número de colunas e os tipos de informações definidos para a tabela. De acordo com tamanho das linhas, pode haver várias linhas por bloco ou uma linha pode se estender por vár...

Shared Pool - Estruturas de Memória no Oracle

#23 O Shared Pool é considerada umas das estruturas de memórias mais complexas da SGA, ela é dividida em dezenas de subestruturas e todas são gerenciadas internamente pelo Oracle. Mas nesse momento vamos citar apenas os 4 principais componentes desta estrutura, as demais serão analizadas posteriormente. Quando uma aplicação executa uma DML, vários processos internos no Oracle são realizados até o retorno do resultado para o usuário. E esses 4 componentes tem participação direta na execução da DML e com isso gerando um bom desempenho do banco de dados. Os 4 principais componentes são: - O Cache de Biblioteca - O Cache de Dicionário de Dados - A Área PL/SQL - O Cache de Resultados de Funções PL/SQL e Consultas SQL Agora, vamos conhecer um pouco mais de cada um. - O Cache de Biblioteca (library cache) Todas instruções DML enviadas pela aplicação devem ser analizadas pelo Oracle. Quem realiza essa análise é o parse, o parse converte o código escrito pelos progra...