Esta postagem tem por objetivo orientar todos os interessados, sobre a utilização de TABLESPACE na criação de tabelas e índices de tabelas Oracle.
TABLESPACE:
Cada TABLESPACE contém um ou mais arquivos denominados arquivos de dados (datafiles) que são estruturas físicas compatíveis com o sistema operacional no qual o Oracle é executado.Como utilizá-la em tabelas e índices?
Fazendo uma rápida analogia imagine o seu banco de dados como um armário de escritório, cada gaveta do armário guarda as pastas de um determinado interesse/assunto.
No nosso banco de dados não é diferente disso. Imagine a criação de uma tabela do schema FISCAL, mas você não especifica a TABLESPACE.
Exemplo:
CREATE TABLE FISCAL.TABLE1 ( ID INTEGER );
Como a tabela foi criada sem especificar a TABLESPACE a mesma foi alocada na TABLESPACE nativa do schema FISCAL conforme a regra:
Se um usuário do banco de dados veio a criar uma tabela ou índice, como foi o exemplo acima, e não for especificada a TABLESPACE na qual a tabela/índice ficará gravada fisicamente, a mesma vai ser criada na TABLESPACE nativa do usuário em que está criado a tabela/índice.
Qual o impacto disso?
O mais simples dos impactos pode ocorrer é se o schema FISCAL foi criado na TABLESPACE User e o cliente desejar excluir as TABLESPACE do schema FISCAL chamada TSD_FISCAL e TSI_FISCAL de sua base, a(s) tabela(s)/índice(s) que foram criadas sem especificar a TABLESPACE ficaram como lixo na base de dados na TABLESPACE User .
Outro impacto é se a TABLESPACE precisar ficar OFFLINE para manutenção, o DBA não vai ter esta flexibilidade de tornar offline apenas o que necessita a devida demanda.
-
- Tablespace de criação de usuário e tabelas que pertence a ele: TSD_<nome_schema>;
-
- Tablespace de criação de índices para as tabelas de um determinado schema: TSI_<nome_schema> ;
Isso ajuda muito, no tocante, a flexibilidade de manutenção, extração para backup, excluir apenas um modulo de um sistema caso ele esteja em apenas uma/duas Tablespaces específicas e ajuda também a manter estruturado e mapeado todos os dados de uma organização.Exemplos de sintaxe:
Errado :
CREATE TABLE FISCAL.TABLE1 ( ID INTEGER ); CREATE UNIQUE INDEX FISCAL.UK_ID ON FISCAL.TABLE1(ID);
Correto:
CREATE TABLE FISCAL.TABLE1 ( ID INTEGER )TABLESPACE TSD_FISCAL;
CREATE UNIQUE INDEX FISCAL.UK_ID ON FISCAL.TABLE1(ID)TABLESPACE TSI_FISCAL;
Obrigado!