domingo, 4 de agosto de 2013

Melhorias na administração da tablespace TEMP


A partir da versão do Oracle 11g foram implementadas melhorias na administração da tablespace temporária TEMP. Foi criada a visão chamada “DBA_TEMP_FREE_SPACE”, que apresenta as informações sobre a utilização da tablespace temporária TEMP, abaixo segue as colunas da visão.

SQL> desc dba_temp_free_space

 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 TABLESPACE_NAME                           NOT NULL VARCHAR2(30)
 TABLESPACE_SIZE                                    NUMBER
 ALLOCATED_SPACE                                    NUMBER
 FREE_SPACE                                         NUMBER

SQL> SELECT * FROM dba_temp_free_space;

TABLESPACE_NAME                TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE
------------------------------ --------------- --------------- ----------
TEMP                                1.7180E+10      8801746944 1.2778E+10

Com as informações contidas na visão DBA_TEMP_FREE_SPACE, pode realizar um “shrink” na tablespace TEMP para liberar o espaço que não está em uso, conforme apresentado abaixo:

SQL> ALTER TABLESPACE temp SHRINK SPACE KEEP 540M;

Tablespace altered.

Após o ajuste da tablespace temporária pode-se verificar que o tamanho que era de  8 GB baixou para 540 MB.

TAMANHO ANTES DA EXECUÇÃO DO COMANDO “ALTER TABLESPACE”:

                                     ALOC        HWM     EM USO      LIVRE     %
TABLESPACE                           (MB)       (MB)       (MB)       (MB) LIVRE
------------------------------ ---------- ---------- ---------- ---------- -----
TEMP                                 8192       2097          0       8192   100


TAMANHO DEPOIS DA EXECUÇÃO DO COMANDO “ALTER TABLESPACE”:

                                     ALOC        HWM     EM USO      LIVRE     %
TABLESPACE                           (MB)       (MB)       (MB)       (MB) LIVRE
------------------------------ ---------- ---------- ---------- ---------- -----
TEMP                                  541       2097          0        541   100

O “shrink” também pode executado diretamente no arquivo físico “tempfile”, deve-se utilizar a cláusula abaixo:

SQL> ALTER TABLESPACE temp
     SHRINK TEMPFILE '+DATADG/dbteste/tempfile/temp01.dbf' KEEP 540M;

Tablespace altered.



                                ALOC        HWM     EM USO      LIVRE     %
TABLESPACE                      (MB)       (MB)       (MB)       (MB) LIVRE
------------------------- ---------- ---------- ---------- ---------- -----
TEMP                             541       2097          0        541   100


A cláusula “keep” especifica o tamanho mínimo da tablespace TEMP ou do “tempfile”. Se este parâmetro for omitido, o banco de dados diminuirá o espaço da tablespace TEMP ou do “tempfile” para o menor tamanho possível, abaixo um exemplo do comando sem a cláusula “keep”.

SQL> ALTER TABLESPACE temp SHRINK SPACE;

Tablespace altered.

                                ALOC        HWM     EM USO      LIVRE     %
TABLESPACE                      (MB)       (MB)       (MB)       (MB) LIVRE
------------------------- ---------- ---------- ---------- ---------- -----
TEMP                               2       2097          0          2   100

 
Referências: Oracle® Database SQL Language Reference 11gR2 (11.2)
                    Oracle® Database Administrator´s Guide 11gR2 (11.2)




MSc. Rubens Oliveira
DBA Oracle Consultor