## ## Scripts analysant le contenu des segments ## # etat.sql : script à personnaliser suivant la base (utiliser tablespaces tools ou ssitools) et suivant les segments que l’on veut analyser # etat2.sql : analyse les segments répertorié avec le script etat.sql. [oracle@su0890 PMCPR1P1 /users/oracle/bja/CAPA] sqlplus /nolog SQL*Plus: Release 10.2.0.3.0 - Production on Mar. Avr. 26 09:05:30 2011 Copyright (c) 1982, 2006, Oracle. All Rights Reserved. SQL> connect / as sysdba Connected. SQL> @etat Table dropped. Table created. 209 rows created. Commit complete. SQL> @etat2 PL/SQL procedure successfully completed. ## ## Analyse des résultats ## Les résultats sont dans la table ssi_etat ## SQL> select TABLESPACE_NAME, sum(TOTAL_BLOCKS) * 32768 / 1024 / 1024, sum(UNFORMATTED_BLOCKS) * 32768 / 1024 / 1024 from ssi_etat group by TABLESPACE_NAME; TABLESPACE_NAME SUM(TOTAL_BLOCKS)*32768/1024/1024 ------------------------------ --------------------------------- SUM(UNFORMATTED_BLOCKS)*32768/1024/1024 --------------------------------------- DATA_001_CPR1 30935 22344.625 DATA_002_CPR1 3750 2510.375 DATA_003_CPR1 451 330.78125 SQL> set linesize 400 SQL> / TABLESPACE_NAME SUM(TOTAL_BLOCKS)*32768/1024/1024 SUM(UNFORMATTED_BLOCKS)*32768/1024/1024 ------------------------------ --------------------------------- --------------------------------------- DATA_001_CPR1 30935 22344.625 DATA_002_CPR1 3750 2510.375 DATA_003_CPR1 451 330.78125 En Mo : DATA_001_CPR1 : 30935 Mo alloué dont 22345 Mo non formatés DATA_002_CPR1 : 3750 Mo alloué dont 2510 Mo non formatés DATA_003_CPR1 : 451 Mo alloué dont 331 Mo non formatés ## # # Récupération des statistiques afin d’avoir une estimation de la taille théorique de la table ## Ces statistiques sont calculés par l’applicatif. Leur calcul a un impact fort sur le fonctionnement de la base. ## On ne fait donc que les lire si ils sont disponibles ## ## avg_row_len : taille moyenne d’une ligne (si la valeur est 100, alors elle est probablement fausse (bug)) ## num_rows : nombre de lignes dans la table ## last_analyzed : date du dernier calcul des statistiques SQL> select avg_row_len, num_rows, last_analyzed from dba_tables where table_name = 'TSR_TICK_SOAG_FBS_REJT'; AVG_ROW_LEN NUM_ROWS LAST_ANALYZED ----------- ---------- -------------------- 84 376760 25-AVR. -11 23:03:08 SQL> !bc 376760 * 84 31647840 31647840 / 1024 30906 ? 30 906 Ko pour la table 'TSR_TICK_SOAG_FBS_REJT' Volume utilisé par cette table : SQL> select bytes / 1024 / 1024 from dba_segments where segment_name = 'TSR_TICK_SOAG_FBS_REJT'; BYTES/1024/1024 --------------- 3020 => 3 Go ## ## Procédure utilisé pour estimer l’espace dans la table ## New procedure DBMS_SPACE.SPACE_USAGE for BMB segments ----------------------------------------------------- This new procedure provides the space usage ratio within each block. This procedure replaces the DBMS_SPACE.FREE_BLOCKS procedure for BMB segments. (refer Note:116565.1) SQL> declare 2 v_unformatted_blocks number; 3 v_unformatted_bytes number; 4 v_fs1_blocks number; 5 v_fs1_bytes number; 6 v_fs2_blocks number; 7 v_fs2_bytes number; 8 v_fs3_blocks number; 9 v_fs3_bytes number; 10 v_fs4_blocks number; 11 v_fs4_bytes number; 12 v_full_blocks number; 13 v_full_bytes number; 14 begin 15 dbms_space.space_usage ('SYSTEM', 'TEST', 'TABLE', v_unformatted_blocks, 16 v_unformatted_bytes, v_fs1_blocks, v_fs1_bytes, v_fs2_blocks, v_fs2_bytes, 17 v_fs3_blocks, v_fs3_bytes, v_fs4_blocks, v_fs4_bytes, v_full_blocks, v_full_bytes); 18 dbms_output.put_line('Unformatted Blocks = '||v_unformatted_blocks); 19 dbms_output.put_line('FS1 Blocks = '||v_fs1_blocks); 20 dbms_output.put_line('FS2 Blocks = '||v_fs2_blocks); 21 dbms_output.put_line('FS3 Blocks = '||v_fs3_blocks); 22 dbms_output.put_line('FS4 Blocks = '||v_fs4_blocks); 23 dbms_output.put_line('Full Blocks = '||v_full_blocks); 24 end; 25 / Unformatted Blocks = 0 FS1 Blocks = 0 FS2 Blocks = 0 FS3 Blocks = 0 FS4 Blocks = 1 Full Blocks = 9 PL/SQL procedure successfully completed. where FS1 means 0-25% free space within a block FS2 means 25-50% free space within a block FS3 means 50-75% free space within a block FS4 means 75-100% free space within a block