Oracle Ajuste Sga

download Oracle Ajuste Sga

of 6

Transcript of Oracle Ajuste Sga

  • 7/21/2019 Oracle Ajuste Sga

    1/6

  • 7/21/2019 Oracle Ajuste Sga

    2/6

    Pedro F. CarvalhoAnalista de [email protected]

    'consistent gets from cache','physical reads cache');

    NAME VALUE---------------------------------------------- ----------db block gets from cache 88204118consistent gets from cache 9726193722physical reads cache 2560965

    3 rows selected.

    1 - (2560965/(882041189726193722)) = 0,99973906

    O buffer cache tambm pode ser ajustado com base na view VDB_CACHE_ADVICE.

    Para que essa view seja populada necessrio que o parmetro DB_CACHE_ADVICEesteja ON.

    show parameter db_cache_advicedb_cache_advice string ON

    A declarao abaixo consulta a respectiva view, retornando estimativas de buffer e deacerto.

    COLUMN size_for_estimate FORMAT 999,999,999,999 heading 'Cache Size (MB)'

    COLUMN buffers_for_estimate FORMAT 999,999,999 heading 'Buffers'COLUMN estd_physical_read_factor FORMAT 999.90 heading 'Estd PhysRead Factor'COLUMN estd_physical_reads FORMAT 999,999,999 heading 'Estd Phys Reads'

    SELECT size_for_estimate, buffers_for_estimate,estd_physical_read_factor, estd_physical_reads

    FROM VDB_CACHE_ADVICEWHERE name = 'DEFAULT'

    AND block_size = (SELECT valueFROM VPARAMETER

    WHERE name = 'db_block_size')AND advice_status = 'ON';

    Estd Phys Estd PhysCache Size (MB) Buffers Read Factor Reads

    ---------------- ------------ ----------- ------------80 9,915 61.70 150,251,109160 19,830 40.30 98,140,104240 29,745 21.08 51,329,557320 39,660 7.23 17,594,710400 49,575 1.36 3,309,722480 59,490 1.21 2,948,364560 69,405 1.13 2,763,717640 79,320 1.09 2,655,866720 89,235 1.06 2,581,271

  • 7/21/2019 Oracle Ajuste Sga

    3/6

    Pedro F. CarvalhoAnalista de [email protected]

    800 99,150 1.03 2,510,199880 109,065 1.00 2,435,219960 118,980 .98 2,380,060

    1,040 128,895 .97 2,350,2691,120 138,810 .95 2,309,3341,200 148,725 .93 2,275,6241,280 158,640 .92 2,249,9301,360 168,555 .92 2,231,5801,440 178,470 .91 2,211,4131,520 188,385 .90 2,193,9221,600 198,300 .89 2,167,724

    20 rows selected.

    A anlise dela feita de forma diferente a de taxas. A consulta mostra uma reduo de2(0.98) no nmero de leitura fsicas caso o buffer cache seja configurado para 960MB.

    Lembrando que, quando falamos de memria, estamos falando de memria fsica, umservidor Oracle, no deve fazer swap.

    Para utilizar o buffer cache de forma eficiente, as declaraes SQL da aplicao devemestar ajustadas para evitar consumo desnecessrio de recursos. Isso feito verificandoas declaraes SQL executadas com mais freqncia e as que fazem uso de uma maiorquantidade de buffers.

    A consulta abaixo retorna as 50 maiores consultas consumidoras de BUFFERS.

    SELECT *FROM (SELECT SQL_FULLTEXT, BUFFER_GETS

    FROM VSQLORDER BY BUFFER_GETS DESC)

    WHERE ROWNUM

  • 7/21/2019 Oracle Ajuste Sga

    4/6

    Pedro F. CarvalhoAnalista de [email protected]

    Para isso, observe o seguinte:

    Utilize sempre que possvel bind variables ao invs de caracteres literais nasdeclaraes. Isso faz com que o Oracle armazene apenas uma declarao SQL.As declaraes, apesar de semelhantes, ocupam duas reas distintas naSHARED_POOL:

    Substitua:

    SELECT employee_id FROM employees WHERE department_id = 10;SELECT employee_id FROM employees WHERE department_id = 20;

    Por:

    SELECT employee_id FROM employees WHERE department_id = :dept_id;

    As aplicaes devem evitar os usurios possam criar suas prprias instrues.

    Crie padres para as bind variables e para os espaos nas declaraes SQLblocos de PL/SQL.

    Por exemplo:

    SELECT employee_id FROM employees WHERE department_id = :dept_id

    diferente de:

    SELECT employee_id FROM employees where department_id = :dept_id

    O objetivo do tuning na SHARED_POOL fazer com que uma declarao SQL que estno cache possa ser reutilizada o maior nmero de vezes possvel.

    Utilize a declarao abaixo para identificar a taxa de hit ratio da shared pool:

    SELECT sum(pinhits) / sum(pins)FROM VLIBRARYCACHE;

    SUM(PINHITS)/SUM(PINS)----------------------

    .996986356

    1 row selected.

    A consulta mostrou que 99,69 dos cdigos de SQL e PLSQL esto sendoreaproveitados.

    A declarao abaixo mostra a quantidade de bytes livres na SHARED_POOL.

  • 7/21/2019 Oracle Ajuste Sga

    5/6

    Pedro F. CarvalhoAnalista de [email protected]

    SELECT * FROM VSGASTATWHERE NAME = 'free memory'AND POOL = 'shared pool';

    POOL NAME BYTES----------- ------------------------- ---------shared pool free memory 385236520

    1 row selected.

    A consulta abaixo tambm auxilia na descoberta da taxa de acerto da SHARED POOL.

    SELECT (SUM(GETS - GETMISSES - FIXED)) / SUM(GETS) "ROW CACHE"

    FROM VROWCACHE;

    ROW CACHE----------.994562437

    1 row selected.

    Tambm possvel utilizar a view VSHARED_POOL_ADVICE. Para isso preciso que oparmetro STATISTICS_LEVEL esteja configurado como ALL ou TYPICAL.

    show parameter statistics_level;

    statistics_level string TYPICALSELECT shared_pool_size_for_estimate "Size of Shared Pool in MB",

    shared_pool_size_factor "Size Factor",estd_lc_time_saved "Time Saved in sec"

    FROM vshared_pool_advice;

    Size of Shared Pool in MB Size Factor Time Saved in sec------------------------- ----------- -----------------

    352 .2391 1461671512 .3478 1465054672 .4565 1470451832 .5652 1472452992 .6739 1472513

    1152 .7826 14725361312 .8913 14725421472 1 14725421632 1.1087 14725421792 1.2174 14725421952 1.3261 14725422112 1.4348 14725422272 1.5435 14725422432 1.6522 14725422592 1.7609 14725422752 1.8696 1472542

  • 7/21/2019 Oracle Ajuste Sga

    6/6

    Pedro F. CarvalhoAnalista de [email protected]

    2912 1.9783 14725423072 2.087 1472542

    18 rows selected.

    A sada acima mostra que o tamanho da shared pool de 1472M. Mostra tambm que,se o tamanho da shared pool fosse ajustado para 3072M, teria a mesma eficincia.

    LOG BUFFER

    Aplicaes que inserem, modificam ou excluem um grande volume de registrosnormalmente no utilizam o tamanho default de log buffer. Apesar do tamanho do logbuffer ser bem menor frente ao tamanho total da SGA, ele tem grande impacto naperformace de sistemas que realizam atualizao no volume dos dados.

    Um tamanho inicial para o log buffer :

    MAX(0.5M, (128K * nmero de CPUs))

    A maioria dos sistemas que possuem log buffer maior que 1M no possuem ganhos deperformance.

    A anlise da performance do log buffer feita por intervalo. Deve ser coletado emintervalos, e verificar se existe um aumento do valor. O ideal que no existamalteraes.

    SELECT NAME, VALUEFROM VSYSSTATWHERE NAME = 'redo buffer allocation retries';

    NAME VALUE----------------------------------------------------------- ----------redo buffer allocation retries 11

    1 row selected.

    Se o valor aumentar de forma consistente, necessrio ajustar o tamanho do log

    buffer