Quantcast

INDEX ORACLE

Vendredi 8 juin 2012 5 08 /06 /Juin /2012 15:19

 

Estimer la taille d'un index avec CREATE_INDEX_COST.

Comment estimer la taille d'un index avant sa création dans Oracle.

Simulation réelle de l'estimation de taille d'un index avant sa création.

Pour connaitre la taille que pourrait occuper un index avant sa création, Oracle propose le package DBMS_SPACE avec la procédure CREATE_INDEX_COST.
Ce script nous donnera la taille estimée de l'index et la taille du segment alloué.
L'utilisation de la procédure DBMS_SPACE.CREATE_INDEX_COST permet au DBA d'anticiper les modifications de paramètres de stockage avant de créer ses index dans la base de données.
Celà permet aussi de comparer la taille d'un index en place et de simuler sa nouvelle taille si on envisage un rebuild index.

 

 

SQL> SET SERVEROUTPUT ON;
SQL> DECLARE
         v_estimation NUMBER;
         v_alloue     NUMBER;
         v_sql VARCHAR2(255) :='CREATE INDEX idx_1 ON societe(soc_code,soc_nom)';
     BEGIN
         DBMS_SPACE.CREATE_INDEX_COST(v_sql,
                                      used_bytes => v_estimation,
                                      alloc_bytes => v_alloue);
   
         DBMS_OUTPUT.PUT_LINE ('Estimation Index  = '|| v_estimation);
         DBMS_OUTPUT.PUT_LINE ('Segment alloue    = '|| v_alloue);
     END;
     /
Estimation Index  = 2886
Segment alloue    = 65536

Procédure PL/SQL terminée avec succès.

SQL>

Haut de Page www.dba-ora.fr

 

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Espace occupé par les index.
Par Oracle SQL - Publié dans : INDEX ORACLE
Ecrire un commentaire - Voir les 0 commentaires
Jeudi 7 juin 2012 4 07 /06 /Juin /2012 15:44

 

Taille réelle index dans Oracle.

Comment connaître la taille réelle des index dans Oracle.

Taille réellement utilisée d'un index avec DBMS_SPACE.

Pour voir l'espace réellement occupé par les index Oracle, on utilisera le package DBMS_SPACE avec la procédure OBJECT_SPACE_USAGE.

 

Calcul de la taille réelle des index dans Oracle.

Ce script nous fournira l'espace utilisé par l'index et l'espace alloué pour l'index Oracle.

 

SQL> SET SERVEROUTPUT ON;
SQL> DECLARE
   
       OBJECT_OWNER_in         varchar2(30) :=  'SCOTT';
       OBJECT_NAME_in          varchar2(30) := 'X_PHYNUM';
       OBJECT_TYPE_in          varchar2(30) := 'INDEX';
       SAMPLE_CONTROL_in       number       :=  NULL;
       SPACE_USED_out          number;
       SPACE_ALLOCATED_out     number;
       CHAIN_PCENT_out         number;
  
     BEGIN
   
       dbms_space.object_space_usage (
         OBJECT_OWNER           => OBJECT_OWNER_in        ,
         OBJECT_NAME            => OBJECT_NAME_in         ,
         OBJECT_TYPE            => OBJECT_TYPE_in         ,
         SAMPLE_CONTROL         => SAMPLE_CONTROL_in      ,
         SPACE_USED             => SPACE_USED_out         ,
         SPACE_ALLOCATED        => SPACE_ALLOCATED_out    ,
         CHAIN_PCENT            => CHAIN_PCENT_out
      );
   
       dbms_output.put_line('Espace utilisé en Mo: ' || ROUND(SPACE_USED_out/1024/1024,2));
       dbms_output.put_line('Espace alloué  en Mo: ' || ROUND(SPACE_ALLOCATED_out/1024/1024,2));
   
     END;
     /

Espace utilisé en Mo: 481,77
Espace alloué  en Mo: 536

Procédure PL/SQL terminée avec succès.

SQL>

Par création d'une procédure

 

SQL> CREATE OR REPLACE PROCEDURE taille_reelle_index
     AS
   
       OBJECT_OWNER_in         varchar2(30) :=  'SCOTT';
       OBJECT_NAME_in          varchar2(30) := 'X_PHYNUM';
       OBJECT_TYPE_in          varchar2(30) := 'INDEX';
       SAMPLE_CONTROL_in       number       :=  NULL;
       SPACE_USED_out          number;
       SPACE_ALLOCATED_out     number;
       CHAIN_PCENT_out         number;
   
     BEGIN
   
       dbms_space.object_space_usage (
         OBJECT_OWNER           => OBJECT_OWNER_in        ,
         OBJECT_NAME            => OBJECT_NAME_in         ,
         OBJECT_TYPE            => OBJECT_TYPE_in         ,
         SAMPLE_CONTROL         => SAMPLE_CONTROL_in      ,
         SPACE_USED             => SPACE_USED_out         ,
         SPACE_ALLOCATED        => SPACE_ALLOCATED_out    ,
         CHAIN_PCENT            => CHAIN_PCENT_out
       );
   
       dbms_output.put_line('Espace utilisé en Mo: ' || ROUND(SPACE_USED_out/1024/1024,2));
       dbms_output.put_line('Espace alloué  en Mo: ' || ROUND(SPACE_ALLOCATED_out/1024/1024,2));
   
     END;
     /

Procédure créée.

SQL> SET SERVEROUTPUT ON;
SQL> EXEC taille_reelle_index;

Espace utilisé en Mo: 481,77
Espace alloué  en Mo: 536

Procédure PL/SQL terminée avec succès.

SQL>

Haut de Page www.dba-ora.fr

 

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Espace occupé par les index.
Par Oracle SQL - Publié dans : INDEX ORACLE
Ecrire un commentaire - Voir les 0 commentaires

Oracle Sql et administration

Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés