Overblog Suivre ce blog
Administration Créer mon blog
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.
Repost 0
Published by Oracle SQL - dans INDEX ORACLE
commenter cet article
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.
Repost 0
Published by Oracle SQL - dans INDEX ORACLE
commenter cet article
10 mai 2012 4 10 /05 /mai /2012 20:50

 

Afficher la taille allouée des index dans Oracle.

Comment voir la taille de l'espace alloué des index dans Oracle.

Connaître la taille allouée des index à partir des vues.

Pour voir la taille ou l'espace occupée par les index d'un schéma dans Oracle, et voir la quantité d'espace réellement allouée on utilisera les vues dba_segments et dba_indexes.

 

Requête pour connaître la taille allouée des index dans Oracle.

 
  SQL> REPHEADER PAGE CENTER 'NOM INDEX ET TAILLE ALLOUEE SEGMENT' SQL> SELECT idx.index_name, SUM(seg.bytes) FROM dba_segments seg, dba_indexes idx WHERE idx.table_owner = 'SYSADM' AND idx.table_name like '%' AND idx.owner = seg.owner AND idx.index_name = seg.segment_name GROUP BY idx.index_name ORDER BY 2 ASC; 

 

Liste des index avec taille allocation segment.

 
  NOM INDEX ET TAILLE ALLOUEE SEGMENT INDEX_NAME SUM(DBA_SEGMENTS.BYTES) ------------------------------ ----------------------- XFK_BZESD 59768832 X_LIAC_DEAR_NUM 62914560 IND_FK_LIG_ID 67108864 X_LIG_AC_NUM 75497472 X_LIG_AC_CODE 75497472 X_LIG_AC_PROD 75497472 PK_LIG_AC_ID 83886080 IDX_STO_AC 92274688 XFK_PAR_SOC 150994944 XFK_PAR_CLI 184549376 PK_T_CLI_AU 209715200 SQL>  

Haut de Page www.dba-ora.fr

 

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Taille réelle utilisée par index.
Repost 0
Published by Oracle SQL - dans INDEX ORACLE
commenter cet article