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!!!

Quão útil foi este post ?

Clique em uma estrela para classificar o post

nota média 4.5 / 5. Contagem de votos: 28

Sem votos ! Seja o primeiro a classificar !

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