Pular para o conteúdo

Otimização de espaço não utilizado com o Segment Advisor no Oracle

Segment Advisor via SQL*Plus

O Segment Advisor identifica objetos com espaço não utilizado (um dos tipos de fragmentação), que pode ser disponibilizado para uso de outros objetos.

O Segment Advisor é executado automaticamente no Oracle 10gR1 em diante, mas também pode ser executado pontualmente via Enterprise Manager, ou mesmo via SQL*Plus, que é o tema aqui.

Tome cuidado para executar este procedimento somente em um horário de baixo impacto em sua produção, pois ele pode ser pesado, dependendo do tamanho dos objetos analisados.

C:\temp>sqlplus SYS/Nerv2013 AS SYSDBA
 
 SQL*Plus: Release 11.2.0.3.0 Production on Seg Jul 22 15:32:56 2013
  Copyright (c) 1982, 2011, Oracle.  All rights reserved.
 
 Conectado a:
 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
 With the Partitioning, Oracle Label Security, OLAP, Data Mining,
 Oracle Database Vault and Real Application Testing options
 
 SQL> HOST TYPE SegAdv.sql
 VARIABLE vID NUMBER;
 
 BEGIN
   DECLARE
   vNAME VARCHAR2(100);
   vDESCR VARCHAR2(500);
   vOBJ_ID NUMBER;
 
   BEGIN
   vNAME:='Portilho Segment Advisor Task';
   vDESCR:='Portilho Segment Advisor Task';
 
   DBMS_ADVISOR.CREATE_TASK(ADVISOR_NAME=>'Segment Advisor',TASK_NAME=>'Portilho Segment Advisor Task',TASK_DESC=>'P
 rtilho Segment Advisor Task');
   DBMS_ADVISOR.CREATE_OBJECT(TASK_NAME=>'Portilho Segment Advisor Task',OBJECT_TYPE=>'TABLESPACE',ATTR1=>'USERS',AT
 R2=>'NULL',ATTR3=>NULL,ATTR4=>NULL,ATTR5=>NULL,OBJECT_ID=>vOBJ_ID);
   DBMS_ADVISOR.SET_TASK_PARAMETER(TASK_NAME=>vNAME,PARAMETER=>'RECOMMEND_ALL',VALUE=>'TRUE');
   DBMS_ADVISOR.EXECUTE_TASK(vNAME);
   END;
 END;
 /
 
 SQL> @SegAdv.sql
 
 Procedimento PL/SQL concluÝdo com sucesso.
 
 SQL> SELECT BENEFIT_TYPE FROM DBA_ADVISOR_RECOMMENDATIONS WHERE TASK_NAME='Portilho Segment Advisor Task';
 
 BENEFIT_TYPE
 --------------------------------------------------------------------------------
 Ative a movimentaþÒo de linha da tabela SCOTT.T e faþa uma compactaþÒo; a econom
 ia estimada Ú de 92815387 bytes.
 
 SQL> SELECT ATTR1, ATTR2, ATTR3 FROM DBA_ADVISOR_ACTIONS WHERE TASK_NAME='Portilho Segment Advisor Task';
 
 ATTR1
 --------------------------------------------------------------------------------
 ATTR2
 --------------------------------------------------------------------------------
 ATTR3
 --------------------------------------------------------------------------------
 alter table "SCOTT"."T" shrink space
 alter table "SCOTT"."T" shrink space COMPACT
 alter table "SCOTT"."T" enable row movement
 
 SQL> EXEC DBMS_ADVISOR.DELETE_TASK('Portilho Segment Advisor Task');
 
 Procedimento PL/SQL concluÝdo com sucesso.
 
 SQL>

Quão útil foi este post ?

Clique em uma estrela para classificar o post

nota média 4.6 / 5. Contagem de votos: 41

Sem votos ! Seja o primeiro a classificar !

Marcações:

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