Tablespace: Estrutura de armazenamento de dados Oracle

Veja neste artigo a estrutura de armazenamento de dados do ORACLE, com uma maior atenção as TABLESPACE.

O Banco de dados Oracle é composto por uma ou mais unidades lógicas de armazenamento. Estas unidades lógicas são chamadas de TABLESPACES, basicamente são subdivisões do Banco de Dados, onde os segmentos (estruturas para armazenamente de dados) semelhantes são agrupados, facilitando o gerenciamento destes segmentos dentro do Banco de Dados. Pode-se dizer que as TABLESPACES são grupos lógicos de armazenamento.

Com o objetivo de organizar o Banco de Dados, criam-se TABLESPACES para os objetos do Banco de Dados (Segmentos se referem aos objetos do banco de dados), ou seja, cria-se uma TABLESPACE para armazenar Tabelas, outra para armazenar índices e assim por diante. Caso tenha disponível mais de um HD, pode-se criar mais de uma TABLESPACE para tabelas, agrupando tabelas que recebem maior frequencia de acesso ou agrupar aquelas com maior volume de dados, desta forma ganhando desempenho nas operações do Banco.

Os dados de cada segmento de uma TABLESPACE são armazenados fisicamente nos chamados DATAFILES que são arquivos com a extenssão “.dbf” associados as TABLESPACEs no momento de sua criação. Uma TABLESPACE pode conter um ou mais DATAFILES, por sua vez um DATAFILE pode pertencer a apenas uma TABLESPACE.

Um segmento pode ter dados armazenados em mais de um DATAFILE, então pode-se dizer que um segmento pode pertencer a mais de um DATAFILE simultaneamente.

A Figura 1 a seguir exemplifica a relação entre Bando de Dados, Tablespaces, DataFiles e Segmentos:


Figura 1: Estrutura de Armazenamento: Banco de Dados Oracle.

Na figura 1 pode-se observar um banco de dados composto por duas TABLESPACES, cada uma armazena dados de um Segmento em dois DATAFILES. Cada TABLESPACE é independente, mas as estruturas contidas em cada uma delas se assemelham em algum ponto. A Figura 2 mostra a relação das estruturas em uma aplicação real.


Figura 2: Exemplo da Relação das Estruturas de Armazenamento: Banco de Dados Oracle.

A Figura 2, mostrou um exemplo que contem uma TABLESPACE onde é esperado armazenar todas as Tabelas do banco de dados. Pode-se tambem como citado anteriormente criar grupos de tabelas semelhantes, tabelas que recebem maior frequencia de acesso ficam em uma determinada TABLESPACE e outras tabelas com a caracteristica de armazenar um volume grande de dados podem ser agrupadas (de forma lógica) em outra TABLESPACE.

A TABLESPACE SYSTEM, também apresentada na Figura 1, é padrão do Oracle e da maioria dos Banco de Dados, concebida automáticamente quando o banco de dados é criado. Tambem pode-se agrupar as tabelas que armazenam dados semelhantes, por exemplo, cria-se uma TABLESPACE PEDIDO onde são armazenadas as tabelas que se referem aos pedidos de uma loja. Uma outra chama CLIENTE que irá agrupar as tabelas que contem informações pertinentes aos clientes da loja.

Na criação de um Banco de Dados Oracle são criadas automaticamente as seguintes TABLESPACES:

As TABLESPACES alocam espaço em memória para os segmentos que estão associados a ela, garantindo assim que estes segmentos tenham espaço físico para armazenar dados. O tamanho a ser alocado é definido na criação da TABLESPACE e pode ser redefinido a qualquer momento. O tamanho total da TABLESPACE é a soma do tamanho dos DATAFILES a ela associados.

O Administrador de Banco de Dados (DBA) pode usar as TABLESPACES para melhorar o desempenho e a organização do Banco de Dados, por exemplo:

A criação de uma TABLESPACE se dá via script. A seguir script para a criação:

CREATE TABLESPACE TBS_NOME_TABLESPACE DATAFILE 'NOME_DATAFILE.dbf' SIZE 40M ONLINE;

Onde:

Para consultar todas as TABLESPACES criadas em um banco de dados utilize o seguinte script:

SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;

Onde:

Observação: Este comando exibe apenas as TABLESPACES disponíveis para o usuário que realizar sua execução.

Script para a criação uma tabela em uma determinada TABLESPACE:

CREATE TABLE TB_NOME_TABELA ( CODIGO NUMBER(38) )TABLESPACE TBS_NOME_TABLESPACE;

Note que apenas acrescentamos ao comando de criação de tabela uma linha que contém a palavra reservada TABLESPACE mais o nome da TABLESPACE em que se deseja criar a tabela.

As consultas sobre informações das TABLESPACES podem ser feitas em três tabelas do Oracle, o acesso a cada uma delas vai depender dos privilégios do usuário logado. São elas:

As colunas presentes nas tabelas DBA_TABLES, ALL_TABLES e USER_TABLES são comuns umas as outras, podendo variar apenas para o proprietário.

Para consultar as TABLESPACES e as tabelas contidas em cada uma delas utiliza-se o script a seguir:

SELECT TABLESPACE_NAME, TABLE_NAME FROM DBA_TABLES ORDER BY TABLESPACE_NAME;

Observação: Na consulta anterior usou-se a tabela DBA_TABLES, porém poderia ter sido usada a tabela ALL_TABLES ou USER_TABLES. Lembrando que a necessidade de usar uma ou outra tabela também depende dos privilégios do usuário que está realizando a consulta.

O comando a seguir lista todas as tabelas contidas em uma determinada TABLESPACE:

SELECT TABLESPACE_NAME, TABLE_NAME FROM DBA_TABLES WHERE TABLESPACE_NAME = 'TBS_NOME_TABLESPACE';

Caso haja a necessidade de consultar em qual TABLESPACE uma determinada tabela está, usa-se o seguinte script:

SELECT TABLE_NAME, TABLESPACE_NAME FROM DBA_TABLES WHERE TABLE_NAME = 'TB_NOME_TABELA';

É possível alterar uma tabela criada em uma TABLESPACE para outra com o uso da clausula MOVE TABLESPACE, para realizar a alteração basta digitar o script a seguir:

ALTER TABLE TB_NOME_TABELA MOVE TABLESPACE TBS_NOME_TABLESPACE_DESTINO;

Também é possível alterar o nome de uma TABLESPACE, isso pode ser feito com o uso da clausula RENAME TO conforme o seguinte exemplo:

ALTER TABLESPACE TBS_NOME_TABLESPACE RENAME TO TBS_NOVO_NOME_TABLESPACE;

Todas as referências a TABLESPACE alterada são atualizados no dicionário do Banco de Dados.

Assim pode-se concluir que as TABLESPACES ajudam o DBA a organizar de forma lógica os segmentos do Banco de Dados, desta forma melhorando também o desempenho das transações. Todos os dados são armazenados fisicamente nos DATAFILES, que podem compartilhar dados de mais de um segmento, porem cada DATAFILE pertence a apenas uma TABLESPACE.

Para aprofundar-se mais neste assunto consulte as referências utilizadas como base para o desenvolvimento do presente artigo.

Referências:

Concluo assim este artigo.

Abraços, Paulo Kaupa.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados