ago 172014
 

Encontramos uma situação muito interessante, uma consulta na v$lock em produção demorando mais de um minuto:

   
        ## PRODUCAO ##
        
        SQL> set timing on
        SQL> select sum(block) from v$lock;
	
        SUM(BLOCK) 
        ---------- 
                 0 
	
        Elapsed: 00:01:43.0 

Já em desenvolvimento ela estava muito rápida:

    
        ## DESENVOLVIMENTO ## 
        
        SQL> set timing on
        SQL> select sum(block) from v$lock;
	
        SUM(BLOCK) 
        ---------- 
                 0 
	
        Elapsed: 00:00:00.1 

O problema acontecia mesmo sem usuários, e tendo ou não objetos em lock.

Qual seria então o problema ?

Encontramos a seguinte nota no Metalink: 1328789.1 – “Query Against v$lock run from OEM performs slowly”.

O problema de desempenho estava relacionado a falta de coleta de estatísticas para algumas tabelas fixas.

Como resolver ? Muito simples:

    
        SQL> exec dbms_stats.gather_fixed_objects_stats;

E os ganhos ? Impressionantes !

    
        ## PRODUÇÃO ## 
        
        SQL> set timing on
        SQL> select sum(block) from v$lock;
	
        >SUM(BLOCK)
        ---------- 
                 0 
	
        Elapsed: 00:00:00.1 

Espero que a dica ajude !

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)