Pular para o conteúdo

Criação de Tablespaces Permanentes, UNDO e Temporárias no ORACLE

Criação de Tablespaces Permanentes, UNDO e Temporárias no ORACLE

Tablespace é  um conjunto de Datafiles que contém a estrutura física de armazenamento de dados no Sistema Operacional.Sendo assim, a tablespace é uma alocação de espaço que serve para guardar os objetos de um determinado usuário. Para criar uma tablespace em um banco de dados, o usuário terá que ter o grant(permissão) de Create Tablespace e para criar a tablespace SYSAUX (ao lado da SYSTEM, são as  mais importantes do banco de dados), deverá ter o grant de SYSDBA. A tablespace é  uma unidade lógica do banco de dados  e que faz parte da seguinte estrutura:

Banco de Dados > Tablespace (unidade lógica) > Datafile  (arquivo físico) > Segments (unidade lógica, Exemplo: Tabelas)>  Extents (conjunto de blocos, unidades lógicas ) >   > Blocos do banco de Dados (unidade lógica, menor estrutura de um banco de dados) > Blocos do Sistema Operacional.

Neste artigo, será abordados os seguintes tipos de tablespaces: As tablespaces permanentes, a tablespace temporária e a tablespace de Undo. No entanto, também será elucidado a criação de tablespace com vários datafiles de uma só vez.

  • Tablespaces Permanentes: Contém objetos de um usuário em um banco de dados. Estes objetos são armazenados em estruturas físicas chamados Datafiles.
SQL> create tablespace TBSEXEBRUNORS
logging
datafile ‘/dbbruno/datafiles/datafile1.dbf’
size 64m
autoextend on
next 64m maxsize 2048m
extent management local uniform size 1m;  2    3    4    5    6    7
Tablespace created.

Criando uma tablespace com vários Datafiles de uma única vez:

SQL> create tablespace TBSMISCBRUNORS
datafile ‘/dbbruno/datafiles/datafile2.dbf’ size 4M,
‘/dbbruno/datafiles/datafile3.dbf’ size 4M ,
‘/dbbruno/datafiles/datafile4.dbf’ size 4M,
logging
extent management local;  2    3    4    5    6
Tablespace created.

Segue uma consulta na  view DBA_TABLESPACES:

SQL> SET PAGESIZE 180
SQL> SET LINESIZE 180
SQL> SELECT * FROM DBA_TABLESPACES WHERE TABLESPACE_NAME = ‘TBSEXEMPLO’ order by 1,2;
TABLESPACE_NAME                BLOCK_SIZE INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS   MAX_SIZE PCT_INCREASE MIN_EXTLEN STATUS    CONTENTS  LOGGING   FOR EXTENT_MAN
—————————— ———- ————– ———– ———– ———– ———- ———— ———- ——— ——— ——— — ———-
ALLOCATIO PLU SEGMEN DEF_TAB_ RETENTION   BIG PREDICA ENC COMPRESS_FOR
——— — —— ——– ———– — ——- — ————
TBSEXEMPLO           8192          65536                       1  2147483645 2147483645                   65536 ONLINE    PERMANENT LOGGING   NO LOCAL
SYSTEM    NO  AUTO   DISABLED NOT APPLY   NO  HOST    NO
  • Clásula para gerenciamento dos EXTENTS

A cláusula AUTOALLOCATE, especifica que a tablespace será gerenciada pelo ORACLE, e que usuários não poderão especificar tamanhos. Além disso, essa cláusula não é permitida para tablespaces Temporárias ou  de UNDO. No entanto, a cláusula UNIFORM, especifica que a tablespace é gerenciada por um usuário (que poderá especificar tamanhos)  através de tamanhos de bytes, sendo o padrão 1M (megabyte) para utilizar esta cláusula. Já a clásula LOCAL especifica que a tablespace será gerenciada localmente e alguma parte da tablespace é reservado para Bitmap, sendo esta a opção PADRÃO para o tipo de tablespace Permanentes. Todavia, a clásula DICTIONARY, especifica que você deseja que a tablespace seja gerenciada utilizando o dicionário de dados.

  • Clásula para gerenciamento dos SEGMENTS

A cláusula AUTO especifica que você deseja que o ORACLE controle o espaço livre de segmentos na tablespace utilizando BITMAPS.  Quando se faz o uso dessa opção, o ORACLE ignora qualquer especificação de armazenamento posteriores nesta tablespace. A ORACLE recomenda veemente o uso dessa opção. Todavia, está opção só deve ser utilizada em tablespaces permanentes e nunca em uma tablespace SYSTEM. No entanto, a cláusula MANUAL, opção não recomendada pela ORACLE, especifica que você deseja que o ORACLE controle o espaço livre de segmentos na tablespace utilizando freelists (PCTUSED, FREELIST,  FREELIST GROUPS).

  • Tablespaces Temporárias:  Contém dados temporários de uma determinada sessão por um determinado período de tempo. Além disso, este tipo de tablespace possuem Tempfiles e, não, Datafiles.  Esta tablespace é utilizada quando um usuário, ao qual a tablespace temporária foi atribuída, inicia operações. Sendo assim, a tablespace temporária, armazena os dados temporários utilizados em  transações de usuários.
SQL> create temporary tablespace TEMPEXEBRUNORS
tempfile ‘/dbbruno/datafiles/tempfile1.dbf’
size 128m
autoextend on
next  32m maxsize 2048m
extent management local;  2    3    4    5    6
Tablespace created.
  • Tablespaces de UNDO ou Tablespaces de Desfazer: Tablespace utilizada para operações de refeitas, tanto que objetos não podem ser criados nesta tablespace.  Quando esta tablespace não for criada, o ORACLE assume a tablespace SYSTEM para que possa fazer essa operações. No entanto, o padrão é sempre criar uma tablespace de UNDO durante a criação do banco de dados, para que o mesmo esteja no modo de gerenciamento automático de undo.
SQL> create undo tablespace TBSUNDOBRUNORS
datafile ‘/dbbruno/datafiles/tbs_datafileundobrunors_1.dbf”
size 200M;  2    3
Tablespace created.

Segue uma consulta na  view DBA_TABLESPACES:

SQL> SET PAGESIZE 180
SET LINESIZE 180
SELECT TABLESPACE_NAME , STATUS, RETENTION, SEGMENT_SPACE_MANAGEMENT, EXTENT_MANAGEMENT, INITIAL_EXTENT FROM DBA_TABLESPACES WHERE   TABLESPACE_NAME =’ TBSUNDOBRUNORS’ order by 1,2; SQL> SQL>
TABLESPACE_NAME                STATUS    RETENTION   SEGMEN EXTENT_MAN INITIAL_EXTENT
—————————— ——— ———– —— ———- ————–
TBSUNDOBRUNORS                 ONLINE    NOGUARANTEE MANUAL LOCAL               65536
  • Clásula para retenção de segmentos

A cláusula RETENTION GUARANTEE especifica que o ORACLE deverá armazenar dados undo expirados, mesmo que operações em curso retornam falha devido a falta de espaço. Esta opção poderá ser útil em operações de FLASHBACK (onde se faz uma “volta ao passado” para obter , por exemplo, o valor de uma tabela que foi deletado e há a necessidade de saber o valor da mesma em um determinado período). No entanto, a cláusula RETENTION NOGUARANTEE (como no exemplo acima) especifica que o ORACLE poderá substituir os dados undo expirados, por novos dados undo que estão em processamento devido à operações corrente no ambiente, sendo esta, a cláusula padrão.

Espero ter ajudado, abraços!!!

Bruno Reis

Bruno Reis

DBA ORACLE  na International Business Machines (IBM), fornecendo suporte para grandes clientes. Técnico em Informática pela Escola Técnica Polivalente de Americana e estudante de Ciência Computação . Mantenedor do Weblog sobre Banco de Dados Oracle e Gerenciamento de Serviços de TI: www.brunors.com

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress