Criação de Tablespaces e Datafiles no Oracle

Share on facebook
Share on twitter
Share on linkedin
Share on pinterest
Share on tumblr
Share on telegram
Share on whatsapp
Share on skype
Share on email

Neste post e vídeo aula vamos aprender o que são Tablespaces e Datafiles, para que  servem e como é estruturado um banco de dados Oracle.

Esse conhecimento é essencial para criação de objetos no banco de dados como tabelas, índices e views, bem como na administração do banco de dados.

Além da parte teórica, teremos a prática, vamos criar Tablespaces, datafiles e tabelas no Oracle Database 18c.

Para poder praticar, os comandos apresentados neste tutorial é importante que você tenha o Oracle Database instalado e também o SQL Developer.

Caso você não tenha este recursos instalados, você pode conferir a instalação destes aplicativos em nossos posts e vídeo aulas abaixo:

Scripts : Criação de Tablespace, Datafile e tabela no Banco de dados Oracle

https://github.com/webmundi/criacao-tablespace-datafiles-oracle/blob/master/Tablespace.sql

Vídeo aula : Criação de Tablespace, Datafile e tabela Oracle Database



Estruturas Lógicas e Físicas do Banco de Dados Oracle

Estruturação de um banco de dados Oracle

O Oracle database possui estruturas lógicas e físicas como bancos de dados como  Tablespaces e Arquivos de Dados também conhecidos como datafiles.

Na figura podemos entender melhor o relacionamento entre bancos de dados, tablespaces e datafiles

Cada banco de dados está dividido logicamente em um ou mais tablespaces. 

Um ou mais datafiles são criados de forma explícita para cada tablespace a fim de armazenar fisicamente os dados de todos os segmentos (segment) em um tablespace. 

Os Datafiles de um tablespace pode ser armazenados fisicamente em qualquer tecnologia de armazenamento suportada. (SAN,NFS,NAS,Sistema de Arquivos, ASM, etc…)

A seguir veremos as definições de algumas dessas estruturas de dados:

Como vimos o Oracle armazena dados logicamente em tablespaces e fisicamente em arquivos de dados (datafiles)

Datafiles

Os arquivos de dados (datafiles), que são estruturas físicas compatíveis com o sistema operacional no qual o Oracle é executado. 

Tablespaces

Um banco de dados é dividido em unidades lógicas de armazenamento denominadas

tablespaces, que agrupam arquivos de dados ou estruturas lógicas relacionadas. 

Por exemplo, os tablespaces geralmente agrupam todos os segmentos de uma aplicação para simplificar algumas operações administrativas.

Outras estruturas lógicas de uma TableSpace

Uma tablespace está dividida em estruturas lógicas como veremos a seguir:

Segmentos (Segment)

Um segmento abriga um subconjunto de objetos do banco de dados, como tabelas e índices e são armazenados nos tablespaces

Extensões (Extent)

Cada segmento contém uma ou mais extensões. 

Uma extensão consiste em blocos de dados contíguos, ou seja, cada extensão somente pode existir em um Datafile (arquivo de dados).

Bloco de dados (Datablock) 

Os blocos de dados representam a menor unidade de entrada/saída no banco de

dados.

Um bloco de dados corresponde a um número específico de bytes de espaço físico no disco. 

Um tamanho de bloco de dados é especificado para cada tablespace quando ele é criado. Um banco de dados usa e aloca o espaço livre em blocos de dados do Oracle.



Entendendo melhor a arquitetura Oracle

A melhor analogia para se explicar Oracle Database é a imagem de um arquivo físico de documentos

Imagine um banco de dados como um arquivo de documentos, onde: 

  • As gavetas dentro do arquivo são as tablespaces
  • As pastas contidas nas gavetas são os arquivos de dados
  • Os papéis em cada pasta são as tabelas
  • A informação escrita no papel de cada pasta são os dados. 

Finalidade de uma Tablespace

A finalidade de uma Tablespace é organizar o Banco de Dados.

Ou seja, podemos criar uma TABLESPACE para armazenar Tabelas, outra para armazenar índices e assim por diante. 

Caso tenha disponível maiores recursos de hardware de armazenamento como HD SSDs, storages, etc…

Pode-se criar mais de uma TABLESPACE para tabelas, agrupando tabelas que recebem maior quantidade de acesso ou agrupar tabelas com maior volume de dados, desta forma, proporciona maior performance nas operações do Banco de dados

Descobrindo Tablespaces e Datafiles no Oracle Database

Depois de toda a parte teórica, finalmente chegamos a parte prática

Então vamos por a mão na massa.

Como vimos, as tabelas, índices e outros objetos do banco de dados são armazenados em uma tablespace, por isso, para criar objetos é necessário verificar a disponibilidade de espaço na tablespace existente. 

A consulta a seguir mostrará as tablespaces existentes e o quanto espaço está livre para usar.

Lembrando que é preciso ter acesso as views ou ter acesso de sysdba para executar as queries a seguir:

 SELECT df.tablespace_name "Tablespace",
  totalusedspace "Used MB",
  (df.totalspace - tu.totalusedspace) "Free MB",
  df.totalspace "Total MB",
  ROUND(100 * ( (df.totalspace - tu.totalusedspace)/ df.totalspace)) "% Free"
FROM
  (SELECT tablespace_name,
    ROUND(SUM(bytes) / 1048576) TotalSpace
  FROM dba_data_files
  GROUP BY tablespace_name
  ) df,
  (SELECT ROUND(SUM(bytes)/(1024*1024)) totalusedspace,
    tablespace_name
  FROM dba_segments
  GROUP BY tablespace_name
  ) tu
WHERE df.tablespace_name = tu.tablespace_name;

O tamanho total da TABLESPACE é a soma do tamanho dos DATAFILES a ela associados.

Já a próxima consulta mostra o datafile onde a tablespace está localizada:

 SELECT  FILE_NAME, BLOCKS, TABLESPACE_NAME
  FROM DBA_DATA_FILES;



Tablespaces padrões do Banco de dados Oracle

O Oracle vem com as seguintes Tablespaces de padrão: 

SYSTEM, SYSAUX, USERS, UNDOTBS1, e TEMP

System

Tablespace de sistema, é onde o Oracle armazena todas informações referentes ao próprio gerenciamento do banco de dados. Esta Tablespace é parte obrigatória de um banco de dados. Como armazena o dicionário de dados é a tablespace mais crítica do Oracle Database.

Se por algum motivo ficar indisponível ou offline, a instância do banco de dados Oracle abortará.

SYSAUX

Tablespace que somente está disponível a partir da versão 10g do Oracle. 

Funciona como auxiliar a SYSTEM, onde são armazenadas informações relacionadas ao funcionamento do Oracle que antes eram gravadas na SYSTEM.

TEMP

A tablespace TEMP (tablespace temporária) é onde o Oracle armazena todas as suas tabelas temporárias.
Usada para armazenar resultados intermediários de operações de classificação, hash e processamento de objetos grandes.

USERS

Tablespace geralmente usada como padrão para os usuários. Todo segmento/objeto criado no Banco de Dados sem que seja especificada uma TABLESPACE, será criado na USERS.

UNDO

A Tablespace UNDOTBS1 contém os dados de desfazer operações e transações.

Todos os bancos de dados Oracle precisam de um local para armazenar informações de desfazer.
Com esta Tablespace o Oracle Databse possui a capacidade de recuperar transações incompletas ou abortadas.

Não é recomendável criar dados ou misturar informações de usuário ou aplicação nestas Tablespaces (exceção da Tablespace USERS)

É uma boa prática criar tablespaces para seus aplicativos ou finalidade, como por exemplo: ERP, CRM, RH, VENDAS, AGENDA, etc…



Criando Tablespace e Datafile para Aplicação / Usuário

A criação de uma TABLESPACE e Datafile pode ser feita via Enterprise Manager, mas normalmente é feita via script. Como faremos a seguir:

 -- Criando Tablespace e Datafile para Aplicação / Usuário
 -- Primeira Tablespace e Datafile
 CREATE TABLESPACE 
 TBS_WEBMUNDI 
 DATAFILE 'TBS_WEBMUNDI_DATA.dbf' SIZE 1M ONLINE;
 -- Segunda Tablespace e Datafile
 CREATE TABLESPACE 
 TBS_WEBMUNDI2 
 DATAFILE 'TBS_WEBMUNDI_DATA2.dbf' SIZE 1M ONLINE;

Sintaxe do comando CREATE TABLESPACE

CREATE
[ SMALLFILE | BIGFILE ]
TABLESPACE tablespace_name
{ DATAFILE { [ ‘filename’ | ‘ASM_filename’ ]
[ SIZE integer [ K | M | G | T | P | E ] ]
[ REUSE ]
[ AUTOEXTEND
{ OFF
| ON [ NEXT integer [ K | M | G | T | P | E ] ]
[ MAXSIZE { UNLIMITED | integer [ K | M | G | T | P | E ] } ]
}
]
| [ ‘filename | ASM_filename’
| (‘filename | ASM_filename’
[, ‘filename | ASM_filename’ ] )
]
[ SIZE integer [ K | M | G | T | P | E ] ]
[ REUSE ]
}
{ MINIMUM EXTENT integer [ K | M | G | T | P | E ]
| BLOCKSIZE integer [ K ]
| { LOGGING | NOLOGGING }
| FORCE LOGGING
| DEFAULT [ { COMPRESS | NOCOMPRESS } ]
storage_clause
| { ONLINE | OFFLINE }
| EXTENT MANAGEMENT
{ LOCAL
[ AUTOALLOCATE
| UNIFORM
[ SIZE integer [ K | M | G | T | P | E ] ]
]
| DICTIONARY
}
| SEGMENT SPACE MANAGEMENT { AUTO | MANUAL }
| FLASHBACK { ON | OFF }
[ MINIMUM EXTENT integer [ K | M | G | T | P | E ]
| BLOCKSIZE integer [ K ]
| { LOGGING | NOLOGGING }
| FORCE LOGGING
| DEFAULT [ { COMPRESS | NOCOMPRESS } ]
storage_clause
| { ONLINE | OFFLINE }
| EXTENT MANAGEMENT
{ LOCAL
[ AUTOALLOCATE | UNIFORM [ SIZE integer [ K | M | G | T | P | E ] ] ]
| DICTIONARY
}
| SEGMENT SPACE MANAGEMENT { AUTO | MANUAL }
| FLASHBACK { ON | OFF }
]
}

Mais informações em:
https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7003.htm

Criação de tabela em uma Tablespace

Agora vamos criar uma tabela chamada TB_CLIENTE na tablespace TBS_WEBMUNDI 

-- Criação de tabela TB_CLIENTE na Tablespace TBS_WEBMUNDI
 CREATE TABLE TB_CLIENTE
 (
 CODIGO NUMBER(8),
 NOME VARCHAR2(50)
 )TABLESPACE TBS_WEBMUNDI ;
 -- Exibindo dados da tabela Criada
 desc TB_CLIENTE;

Listando tabelas contidas nas Tablespaces

SELECT TABLESPACE_NAME, TABLE_NAME  
FROM  DBA_TABLES  ORDER BY TABLESPACE_NAME; 

Listando tabelas em um determinada Tablespace

  -- Listando tabelas contidas na Tablespace TBS_WEBMUNDI
 SELECT TABLESPACE_NAME, TABLE_NAME  
 FROM  DBA_TABLES  WHERE TABLESPACE_NAME= 'TBS_WEBMUNDI'; 

Descobrindo em que Tablespace esta uma determinada tabela

Caso haja a necessidade de consultar em qual TABLESPACE uma determinada tabela está, utilizamos o script:

 -- Descobrindo em que Tablespace esta uma determinada tabela
 SELECT  TABLE_NAME, TABLESPACE_NAME FROM  DBA_TABLES 
 WHERE TABLE_NAME = 'TB_CLIENTE';

Movimentando uma tabela de uma Tablespace para outra

Agora utilizando o exemplo anterior, vamos movimentar a tabela TB_CLIENTE para a Tablespace TBS_WEBMUNDI2 

 -- Movimentando uma tabela de uma Tablespace para outra
 ALTER TABLE TB_CLIENTE 
 MOVE TABLESPACE 
 TBS_WEBMUNDI2;

-- Checando a mudança de Tablespace
 SELECT  TABLE_NAME, TABLESPACE_NAME FROM  DBA_TABLES 
 WHERE TABLE_NAME = 'TB_CLIENTE';

Renomeando uma Tablespace

 -- Renomeando uma Tablespace
 ALTER TABLESPACE 
 TBS_WEBMUNDI2 
 RENAME TO TBS_WEBMUNDI_PRINCIPAL;

Apagando uma Tablespace

Para apagar uma Tablespace, seu conteúdo e o Datafile utilizamos a query a seguir:

 -- Apagando as Tablespaces Criadas
 DROP TABLESPACE TBS_WEBMUNDI
    INCLUDING CONTENTS AND DATAFILES;
 DROP TABLESPACE TBS_WEBMUNDI_PRINCIPAL
    INCLUDING CONTENTS AND DATAFILES;   

Materiais e leituras que recomendamos para você:

Obrigado

Espero que este tutorial possa lhe ajudar a gerenciar permissões de usuários no Oracle Database e por consequência apoiá-lo em seu trabalho ou estudo deste banco de dados.

Se você gostou desta publicação, compartilhe com seus amigos ou nos acompanhe pelas redes sociais.

Você pode nos ajudar a criar mais conteúdos como este. Como ?

Prestigie nossos anunciantes conhecendo seus produtos e serviços.

É simples e rápido e você certamente ajuda a gente a crescer.

Obrigado e um grande abraço

Renato Sanches

Cadastre-se em nossa Newsletter de Tecnologia

Inscreva-se gratuitamente e seja o primeiro a ser notificado sobre novas atualizações sobre Tecnologia.

Referências:

https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9004.htm

https://www.oracle.com/technetwork/pt/articles/database-performance/introducao-conceito-de-tablespaces-495850-ptb.html

https://docs.oracle.com/cd/B19306_01/server.102/b14220/physical.htm

Gostou do Post ? Compartilhe com seus amigos nas redes sociais.

Share on facebook
Share on twitter
Share on linkedin
Share on pinterest
Share on tumblr
Share on telegram
Share on whatsapp
Share on skype
Share on email

☑️ Comunidades Colaborativas de Aprendizagem 💬

❓ Esclareça suas dúvidas e ajude outras pessoas a aprender sobre o assunto proposto em nossa comunidade colaborativa no Facebook.

Compartilhe ideias e atividades com outros membros enquanto aprendemos juntos em um ambiente virtual criado e mantido pelo webmundi.com.
Aproveite essa oportunidade gratuita para aprimorar seus conhecimentos e participar de discussões sobre o assunto que você está interessado.

☑️ Grupos WebMundi.com Facebook

✔️ Banco de dados : Dicas
▶️ https://bit.ly/dbbrasil

✔️ Windows Dicas
▶️ https://bit.ly/windowsdicas

✔️ Linux : Dicas, Truques e Tutoriais
▶️ https://bit.ly/linuxdicas

 

✔️ Dev Brasil : Desenvolvimento de Software : Programação (Java, Python, Javascript, Flutter, PHP, Html,CSS e muito mais)
▶️ https://bit.ly/devbrasil

✔️ Virtualização de Computadores : Tecnologia
▶️ https://bit.ly/virtualizabr

APOIE O WEBMUNDI.COM

Apoie o Projeto WebMundi.com!

Se você é fã do conteúdo gratuito e de qualidade que o WebMundi.com oferece no Site, Youtube e grupos, agora é a hora de demonstrar seu apoio e ajudar a mantê-lo disponível.
Qualquer doação, por menor que seja, será muito valiosa para nós e fará toda a diferença.

Basta utilizar o PIX ou o botão VALEU do Youtube para fazer sua contribuição.
Não perca essa oportunidade de ajudar a manter o WebMundi.com ativo e fornecer ainda mais conteúdo de qualidade para você e para outros.

Faça sua doação agora e seja parte da nossa comunidade de apoio!

Ajude a manter nossa criação de conteúdo e operação em funcionamento

Estrutura WebMundi | Sites e Canal Youtube

Ter presença na Internet implica em custos como:

  • Domínios (www.webmundi.com / www.webmundi.org)
  • Hospedagem (local onde fica a estrutura do site / páginas / banco de dados)
  • Softwares (programas utilizados para montar e manter o site em operação e edição de vídeo)
  • Layout e Desenvolvimento (profissionais que constroem, mantêm e divulgam o site e o canal)
  • Produção de Conteúdo (Profissionais como Redatores, Produtores, Editores de vídeo, etc…)
  • Certificados de Segurança (cadeado / segurança da página, possibilita a segurança na navegação e seus dados)
  • Manutenção do Site (atualizações do site, criação de novas páginas)

Loja Virtual | WebMundi.com

Outra forma de apoiar a criação de conteúdo no YouTube e em nossos sites é nossa loja virtual Parceria do WebMundi.com com as maiores plataformas de comércio eletrônico do Brasil. Nossa loja é integrada com nossos parceiros associados e possui uma ampla variedade de produtos de marcas renomadas. O Cliente ao escolher um produto é direcionado a loja parceira onde pode fazer sua compra com tranquilidade em um ambiente seguro e 100% confiável. Confira: Loja Virtual WebMundi.com Alguns de nossos parceiros associados:
Shopee Mercado Livre AliExpress Magalu Amazon
Obrigado pela confiança e preferência.

TALVEZ VOCÊ GOSTE TAMBÉM

Mais Assistidos
Como BAIXAR a ISO do WINDOWS 10 OFICIAL e Criar um Pendrive Bootável
Play Video about Como BAIXAR a ISO do WINDOWS 10 OFICIAL e Criar um Pendrive Bootável
Como instalar o Oracle Virtualbox e Criar Máquinas Virtuais (VMs)
Play Video about Como instalar o Oracle Virtualbox e Criar Máquinas Virtuais (VMs)
atualizar windows 7 para windows 10 2020
Play Video about atualizar windows 7 para windows 10 2020
Instalar o Servidor XAMPP no Linux - Localhost Apache MySQL PHP
Play Video about Instalar o Servidor XAMPP no Linux - Localhost Apache MySQL PHP
Como BAIXAR a ISO do WINDOWS 11 OFICIAL e Criar um Pendrive Bootável
Play Video about Como BAIXAR a ISO do WINDOWS 11 OFICIAL e Criar um Pendrive Bootável
Como Transferir o Windows do HD para um SSD : Migrar Windows 10 para SSD sem formatar
Play Video about Como Transferir o Windows do HD para um SSD : Migrar Windows 10 para SSD sem formatar
Como Instalar MySQL + MySQL Workbench : Windows 10
Play Video about Como Instalar MySQL + MySQL Workbench : Windows 10
Instalação Eclipse IDE - Windows
Play Video about Instalação Eclipse IDE - Windows

Discord : WebMundi.com

Uma comunidade apaixonada por tecnologia, onde entusiastas, estudantes e profissionais de TI se reúnem.

Faça Parte do nossa Comunidade!

Junte-se a nós para aprender, colaborar e expandir seus horizontes na área de informática! 🚀
Entrar
Recentes