No Oracle Database, uma estratégia de gerenciamento de dados comum e eficaz é a separação de tabelas e índices em tablespaces distintas. Este artigo explica como criar uma tabela e alocá-la em uma tablespace específica, além de alocar o índice da chave primária em outra tablespace diferente.

A alocação de objetos de dados em tablespaces específicas pode trazer benefícios notáveis, como a otimização do desempenho do banco de dados, a eficiência na recuperação de dados e o gerenciamento simplificado de espaço em disco.

Passo 1: Criando Tablespaces

Antes de criar uma tabela e seu índice, vamos criar duas tablespaces: uma para a tabela e outra para o índice.

CREATE TABLESPACE tablespace_tabela
DATAFILE 'localização_do_arquivo'
SIZE 100M AUTOEXTEND ON;

CREATE TABLESPACE tablespace_indice
DATAFILE 'localização_do_arquivo'
SIZE 50M AUTOEXTEND ON;

Substitua ‘localização_do_arquivo’ pelo caminho onde você deseja armazenar o arquivo de dados.

Passo 2: Criando a Tabela

Agora, vamos criar uma tabela na tablespace tablespace_tabela.

CREATE TABLE minha_tabela
(
  id NUMBER,
  nome VARCHAR2(50)
) TABLESPACE tablespace_tabela;

Esta tabela tem uma coluna de id e uma coluna de nome.

Passo 3: Criando a Chave Primária e o Índice Associado

Agora, vamos criar a chave primária e o índice associado na tablespace tablespace_indice.

ALTER TABLE minha_tabela
ADD CONSTRAINT minha_tabela_pk 
PRIMARY KEY (id) 
USING INDEX 
TABLESPACE tablespace_indice;

Este comando adiciona uma restrição de chave primária à coluna ‘id’ e cria um índice associado a essa chave primária na tablespace tablespace_indice.

No Oracle, quando definimos uma coluna como chave primária durante a criação da tabela, o banco de dados automaticamente cria um índice associado a essa chave. Esse índice é criado na mesma tablespace que a tabela. No entanto, o nosso objetivo neste artigo é mostrar como colocar a tabela e o índice associado à chave primária em tablespaces diferentes.

Portanto, optamos por criar a tabela sem a chave primária inicialmente. Após a criação da tabela, adicionamos a chave primária com a cláusula USING INDEX TABLESPACE, o que nos permite especificar uma tablespace diferente para o índice.

Essa prática oferece flexibilidade e controle sobre a alocação de espaço para tabelas e índices. Além disso, pode melhorar o desempenho do banco de dados, pois permite a leitura simultânea de dados da tabela e do índice a partir de diferentes locais físicos de armazenamento.

Benefícios da Separação de Tabelas e Índices em Tablespaces Diferentes

A principal razão para alocar tabelas e índices em tablespaces separadas é o desempenho. Quando uma operação de consulta é realizada, o Oracle pode ler dados de índices e tabelas simultaneamente. Se os índices e as tabelas estiverem no mesmo disco e a leitura ocorrer simultaneamente, o cabeçote de leitura do disco terá que se mover entre a localização da tabela e a localização do índice, resultando em uma latência de leitura maior. Ao separar índices e tabelas em diferentes tablespaces (e consequentemente, em diferentes discos), essa latência pode ser minimizada, resultando em um melhor desempenho de leitura.

Sobre o autor

Pós graduado em Gestão de Projetos em Tecnologia da Informação pela UNIASSELVI.
Esposo e Pai, curto atividades ao ar livre (Bike, SUP, Natação, Caminhar, Brincar no campo)

Atua com Banco de Dados Oracle desde de 2007. Atualmente é DBA Senior na FLUIDATA Serviços em Banco de dados (www.fluidata.com.br)

Principais atividade Banco de dados:

Implementação, migração, gerenciamento e suporte a produtos Oracle (8i, 9i, 10g, 11g, 12c, 18c, 19c RAC), multiplataforma;
Implementação, migração, gerenciamento e suporte a produtos Microsoft SQL Server (2008 - 2019);
Implementação, migração, gerenciamento e suporte a produtos PostgreSQL (9.3 - 14);
Monitoramento de ambientes 24×7;
Backup e Recovery;
Performance e Tuning;
Alta disponibilidade (HA);
EM database/grid/cloud control;
Conversão de databases;
Standby database / Oracle Data Guard;

Certificações:

Oracle Cloud Infrastructure 2019 Certified Architect AssociateOracle Cloud Infrastructure 2019 Certified Architect Associate
Oracle Database 12c Administrator Certified ProfessionalOracle Database 12c Administrator Certified Professional
Exadata Database Machine Models X2-2 and X2-8 Technology Support SpecialistExadata Database Machine Models X2-2 and X2-8 Technology Support Specialist
Oracle Database 11g Support SpecialistOracle Database 11g Support Specialist
OCP 11g - Oracle Certified Professional AdministratorOCP 11g - Oracle Certified Professional Administrator
OPN Certified Specialist 10g - PartnerNetwork Certified SpecialistOPN Certified Specialist 10g - PartnerNetwork Certified Specialist
Oracle Database 10g Real Applications Clusters AdministratorCertified ExpertOracle Database 10g Real Applications Clusters AdministratorCertified Expert
Oracle Database 10g: Managing Oracle on Linux Certified ExpertOracle Database 10g: Managing Oracle on Linux Certified Expert
OCP 10g - Oracle Certified Professional AdministratorOCP 10g - Oracle Certified Professional Administrator

Principais atividades DEVOPS:

PHP
ASP.net
C#
Docker
Golang
C++
Delphi
Python
HTML5
JavaScript

Você também pode gostar: