DEV Community

Cover image for Tutorial TableSpace ;
Daniel Ferreira Silva
Daniel Ferreira Silva

Posted on

Tutorial TableSpace ;

INTRODUÇÃO:
No Banco de Dados, o Tablespace é uma ferramenta fundamental, pois é utilizada para “abrir” um espaço na memória do banco, então a mesma possibilita um maior desempenho, segurança e fácil manutenção, além disso ajuda aos administradores a fazer alocações para que seja possível atender a todo tipo de requisitos.
Neste artigo, mostraremos 5 cenários para um maior conhecimento do Tablespace, colocando ele em prática, em cada um desses cenários será possível ver a utilidade do mesmo, além de entender as necessidades de se ter um tablespace.

OBJETIVO
Neste tutorial dedicado aos Tablespaces no Oracle, temos como objetivo oferecer uma experiência de aprendizado completa, pautada em critérios fundamentais para a assimilação eficaz de conhecimentos técnicos. Cada seção foi cuidadosamente elaborada considerando quatro pilares essenciais: Abrangência e Precisão Técnica, Clareza e Estrutura, Aplicação Prática e Exemplos Relevantes, além de Didática e Recursos Pedagógicos.

Vamos lá...

Image description

Vamos começar fazendo uma revisão do que é uma tablespace e sua sintaxe.

O que é uma tablespace?

Image description
A tablespace no Oracle é uma unidade lógica de armazenamento que serve como uma área para armazenar dados do banco de dados. O Oracle organiza os dados logicamente em tablespaces, que, por sua vez, são compostos por um ou mais arquivos de dados (datafiles), cada arquivo de dados está ligado exclusivamente a uma tablespace.

Imagem representando estrutura logica:

Image description
Sintaxe basica:

CREATE TABLESPACE nome_tablespace 
    DATAFILE 'caminho/arquivo.dbf' 
    SIZE tamanho_inicial 
    AUTOEXTEND ON NEXT tamanho_incremental 
    MAXSIZE tamanho_maximo;
Enter fullscreen mode Exit fullscreen mode

Agora que já relembramos o que é uma tablespace e sua sintaxe vamos praticar com exemplos de aplicação em cenários diferentes.

1° Cenário: Armazenamento de Dados Crítico;

  • Objetivo: Armazenar dados críticos em uma tabela com alta prioridade.
  • Parâmetros:
    • TABLESPACE de alta performance (SSD).
    • Redefinição do parâmetro PCTFREE para 10% para otimizar espaço.
  • Explicação Técnica:
    • O uso de uma TABLESPACE em um disco SSD oferece alta velocidade de leitura/gravação, enquanto PCTFREE controla a quantidade de espaço livre para evitar fragmentação.
  • Benefício:
    • Acesso rápido e eficiente a dados críticos.

Criação da tablespace nesse cenário:

CREATE TABLESPACE high_performance_ts
   DATAFILE 'high_performance_file.dat' SIZE 1G
   AUTOEXTEND ON NEXT 100M
   EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

   CREATE TABLE critical_data
   TABLESPACE high_performance_ts
   PCTFREE 10
   AS SELECT * FROM source_data WHERE condition;
Enter fullscreen mode Exit fullscreen mode

Explicação:

Este código SQL cria um espaço de tabelas chamado "high_performance_ts" com um arquivo de dados inicial ('high_performance_file.dat') de 1 gigabyte, configurado para se expandir automaticamente em incrementos de 100 megabytes conforme necessário. O gerenciamento de extensões é local e uniforme, com extensões de 1 megabyte. Em seguida, uma tabela chamada "critical_data" é criada dentro desse espaço de tabelas, reservando 10% de cada bloco para futuras atualizações (PCTFREE 10). A tabela é populada com dados selecionados da tabela "source_data" com base em uma condição específica.

2° Cenário: Armazenamento de Arquivos Históricos;

  • Objetivo: Manter dados históricos acessíveis, mas com menor prioridade.
    • Parâmetros:
      • TABLESPACE em um disco de alta capacidade (HDD).
      • Uso de compressão para economizar espaço.
    • Explicação Técnica:
      • HDD para armazenar grandes quantidades de dados e a compressão para reduzir o espaço ocupado.
    • Benefício:
      • Eficiente para armazenar dados históricos em longo prazo.

Criação da tablespace nesse cenário:

CREATE TABLESPACE historical_data_ts
   DATAFILE 'historical_data_file.dat' SIZE 10G
   AUTOEXTEND ON NEXT 1G
   EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

   CREATE TABLE historical_archive
   TABLESPACE historical_data_ts
   COMPRESS FOR OLTP
   AS SELECT * FROM source_data WHERE date < '2023-01-01';
Enter fullscreen mode Exit fullscreen mode

Explicação:

Esse código SQL cria um espaço de tabelas chamado "historical_data_ts" com um arquivo de dados inicial ('historical_data_file.dat') de 10 gigabytes. O espaço de tabelas está configurado para aumentar automaticamente em incrementos de 1 gigabyte conforme necessário. O gerenciamento de extensões é local e uniforme, com extensões de 1 megabyte.
Em seguida, uma tabela chamada "historical_archive" é criada dentro desse espaço de tabelas. A tabela utiliza compressão otimizada para transações online (OLTP) com a opção COMPRESS FOR OLTP. Os dados na tabela são populados selecionando registros da tabela "source_data" com base em uma condição que verifica se a data é anterior a '2023-01-01'. Essa operação é destinada a arquivar dados históricos anteriores a uma determinada data.

3° Cenário: Isolamento de Dados Sensíveis;

  • Objetivo: Isolar dados sensíveis em uma área restrita.
  • Parâmetros:
    • Uso de TABLESPACE separada com criptografia habilitada.
  • Explicação Técnica:
    • A criptografia ajuda a proteger dados sensíveis, e a separação em uma TABLESPACE diferente impede o acesso não autorizado.
  • Benefício:
    • Fortalece a segurança dos dados sensíveis.

Criação da tablespace nesse cenário:

CREATE TABLESPACE secure_data_ts
   DATAFILE 'secure_data_file.dat' SIZE 5G
   AUTOEXTEND ON NEXT 500M
   EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
   ENCRYPTION USING 'AES256' DEFAULT STORAGE(ENCRYPT);

   CREATE TABLE sensitive_data
   TABLESPACE secure_data_ts
   AS SELECT * FROM source_data WHERE sensitive_condition;
Enter fullscreen mode Exit fullscreen mode

Explicação:

Esse código SQL cria um espaço de tabellas chamado "secure_data_ts" com um arquivo de dados inicial ('secure_data_file.dat') de 5 gigabytes. O espaço de tabelas é configurado para aumentar automaticamente em incrementos de 500 megabytes conforme necessário. O gerenciamento de extensões é local e uniforme, com extensões de 1 megabyte.
Além disso, é aplicada a criptografia aos dados no espaço de tabelas usando o algoritmo 'AES256'. A cláusula ENCRYPTION USING 'AES256' DEFAULT STORAGE(ENCRYPT) especifica que a tabela padrão é criptografada, garantindo segurança adicional aos dados armazenados no espaço de tabelas.
Posteriormente, uma tabela chamada "sensitive_data" é criada dentro desse espaço de tabelas. A tabela é populada selecionando registros da tabela "source_data" com base em uma condição sensível especificada por WHERE sensitive_condition. Essa configuração visa garantir a segurança dos dados sensíveis armazenados na tabela.

4° Cenário: Desenvolvimento e Testes;

  • Objetivo: Fornecer ambiente de desenvolvimento/testes eficiente.
  • Parâmetros:
    • TABLESPACE temporária para processamento rápido.
  • Explicação Técnica:
    • Uso de TABLESPACE temporária para otimizar operações de leitura/gravação durante o desenvolvimento e testes.
  • Benefício:
    • Acelera o ciclo de desenvolvimento.

Criação da tablespace nesse cenário:

CREATE TEMPORARY TABLESPACE temp_dev_test_ts
   TEMPFILE 'temp_dev_test_file.tmp' SIZE 2G
   AUTOEXTEND ON NEXT 200M
   EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

   -- Usar durante o desenvolvimento/testes
   ALTER SESSION SET TEMPORARY_TABLESPACE = temp_dev_test_ts;
Enter fullscreen mode Exit fullscreen mode

Explicação:

Esse código SQL cria um espaço de tabelas temporário chamado "temp_dev_test_ts" com um arquivo temporário ('temp_dev_test_file.tmp') de 2 gigabytes. O espaço de tabelas temporário é configurado para aumentar automaticamente em incrementos de 200 megabytes conforme necessário. O gerenciamento de extensões é local e uniforme, com extensões de 1 megabyte.
A seguir, há um comentário indicando que esse espaço de tabelas temporário será usado durante o desenvolvimento ou testes.
Finalmente, é executada uma instrução ALTER SESSION para definir o espaço de tabelas temporário atual para "temp_dev_test_ts". Isso significa que durante a sessão atual, as operações que envolvem tabelas temporárias usarão o espaço de tabelas temporário recém-criado. Isso é útil para isolar temporariamente o armazenamento de dados temporários durante o desenvolvimento ou testes.

5° Cenário: Recuperação de Desastres;

  • Objetivo: Facilitar a recuperação de dados em caso de falha.
  • Parâmetros:
    • TABLESPACE particionada para facilitar backup incremental.
  • Explicação Técnica:
    • Particionar TABLESPACE para permitir backups incrementais, reduzindo o tempo de recuperação em caso de falha.
  • Benefício:
    • Maior eficiência na recuperação de dados após desastres.

Criação da tablespace nesse cenário:

CREATE TABLESPACE partitioned_recovery_ts
   DATAFILE 'part1_recovery_file.dat' SIZE 2G
   AUTOEXTEND ON NEXT 200M
   EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M,
   DATAFILE 'part2_recovery_file.dat' SIZE 2G
   AUTOEXTEND ON NEXT 200M
   EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
Enter fullscreen mode Exit fullscreen mode

Explicação:

Esse código SQL cria um espaço de tabelas chamado "partitioned_recovery_ts" com dois arquivos de dados iniciais. O primeiro arquivo, 'part1_recovery_file.dat', tem um tamanho inicial de 2 gigabytes e é configurado para aumentar automaticamente em incrementos de 200 megabytes conforme necessário. O gerenciamento de extensões é local e uniforme, com extensões de 1 megabyte.
O segundo arquivo, 'part2_recovery_file.dat', também tem um tamanho inicial de 2 gigabytes e é configurado da mesma maneira que o primeiro, com extensões uniformes de 1 megabyte.
Este código é utilizado para criar um espaço de tabelas particionado com dois arquivos de dados, potencialmente permitindo uma melhor organização e recuperação de dados, especialmente quando há necessidade de dividir os dados entre diferentes volumes ou discos físicos.

Conclusão:

Image description
Com este artigo, obtivemos um conhecimento um pouco maior sobre como utilizar um Tablespace, concluindo então que esta é uma ferramenta útil para os administradores de um banco de dados, isso porque o mesmo será utilizado para garantir uma maior segurança, um maior desempenho e simplificar a manutenção do banco de dados, usando-o para abrir espaço na memória dos dados.
Com os cenários apresentados aqui, pudemos perceber o quanto este recurso é versátil, mostrando que este pode apresentar soluções rápidas desde um problema no armazenamento crítico, até para recuperar dados após algum defeito, ajudando com o cotidiano de quem trabalha com banco de dados para dar maior aprimoramento ao seu trabalho.

Top comments (0)