[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
Fórum Nerv Informática • Exibir tópico - E-rows e A-rows
Índice do fórum Treinamentos Avançados Treinamento Oracle Performance Diagnostics & Tuning E-rows e A-rows

E-rows e A-rows

Dúvidas, dicas e atualizações sobre o Treinamento Oracle Performance Diagnostics & Tuning.

Mensagem Sex Out 30, 2015 12:09 pm

Mensagens: 0
Por que alguns planos me mostram o valor estimado e o valor atual, outros me mostram apenas o estimado e alguns não mostram nada?

SQL> ALTER SESSION SET statistics_level='ALL';

Session altered.


SQL> SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR(('dr6cphyffhjtk'),0, 'ALLSTATS LAST'));

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID dr6cphyffhjtk, child number 0
-------------------------------------
SELECT SQL_ID, CHILD_NUMBER FROM V$SQL WHERE SQL_TEXT LIKE '%GABRIEL_3%'

Plan hash value: 903671040

--------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time |
--------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 2 |00:00:00.01 |
|* 1 | FIXED TABLE FULL| X$KGLCURSOR_CHILD | 1 | 1 | 2 |00:00:00.01 |

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

1 - filter(("KGLNAOBJ" IS NOT NULL AND "KGLNAOBJ" LIKE '%GABRIEL_3%' AND
"INST_ID"=USERENV('INSTANCE')))


19 rows selected.

SQL> SELECT SQL_ID, CHILD_NUMBER FROM V$SQL WHERE SQL_TEXT LIKE '%GABRIEL_3%';

SQL_ID CHILD_NUMBER
------------- ------------
dr6cphyffhjtk 0
030490ay7nsy7 0

SQL> SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR(('030490ay7nsy7'),0, 'ALLSTATS LAST'));

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID 030490ay7nsy7, child number 0
-------------------------------------
select /* GABRIEL_3 */ owner, object_name from t2 where owner='SYSTEM'

Plan hash value: 2572602246

---------------------------------------------------------------------
| Id | Operation | Name | E-Rows |
---------------------------------------------------------------------
| 0 | SELECT STATEMENT | | |
| 1 | TABLE ACCESS BY INDEX ROWID BATCHED| T2 | 589 |

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|* 2 | INDEX RANGE SCAN | IDX_T2_OWNER | 589 |
---------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

2 - access("OWNER"='SYSTEM')

Note
-----
- Warning: basic plan statistics not available. These are only collected when:

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
* hint 'gather_plan_statistics' is used for the statement or
* parameter 'statistics_level' is set to 'ALL', at session or system level


25 rows selected.

SQL> alter session set statistics_level=ALL;

Session altered.

SQL> SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR(('030490ay7nsy7'),0, 'ALLSTATS LAST'));

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID 030490ay7nsy7, child number 0
-------------------------------------
select /* GABRIEL_3 */ owner, object_name from t2 where owner='SYSTEM'

Plan hash value: 2572602246

---------------------------------------------------------------------
| Id | Operation | Name | E-Rows |
---------------------------------------------------------------------
| 0 | SELECT STATEMENT | | |
| 1 | TABLE ACCESS BY INDEX ROWID BATCHED| T2 | 589 |

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|* 2 | INDEX RANGE SCAN | IDX_T2_OWNER | 589 |
---------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

2 - access("OWNER"='SYSTEM')

Note
-----
- Warning: basic plan statistics not available. These are only collected when:

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
* hint 'gather_plan_statistics' is used for the statement or
* parameter 'statistics_level' is set to 'ALL', at session or system level


25 rows selected.



SQL> SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR(('030490ay7nsy7'),0, 'TYPICAL'));

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID 030490ay7nsy7, child number 0
-------------------------------------
select /* GABRIEL_3 */ owner, object_name from t2 where owner='SYSTEM'

Plan hash value: 2572602246

----------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 20 (100)| |
| 1 | TABLE ACCESS BY INDEX ROWID BATCHED| T2 | 589 | 18259 | 20 (0)| 00:00:01 |

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|* 2 | INDEX RANGE SCAN | IDX_T2_OWNER | 589 | | 2 (0)| 00:00:01 |
----------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

2 - access("OWNER"='SYSTEM')


19 rows selected.

Mensagem Qua Nov 04, 2015 12:41 pm
portilho Site Admin

Mensagens: 482
Hum, veja que ele reclama exatamente que não coletou as estatísticas de utilização ("basic plan statistics not available"), mesmo você mostrando o ALTER SESSION.
Vou tentar fazer um teste aqui e ver se tenho o mesmo resultado.

Dica: quando colocr plano de execução aqui, utilize a Tag code, fica bem legal.

Mensagem Qua Nov 04, 2015 12:44 pm

Mensagens: 0
O que seria a tag code?

Mensagem Qua Nov 04, 2015 6:10 pm
portilho Site Admin

Mensagens: 482
Eu executei vários aqui, e com ALTER SESSION aparece o E-Rows e A-Rows sim.
Você pode me passar uma sequência toda de testes que fez para chegar neste resultado? Se possível, não utilize SYSTEM, use um usuário "normal".

Quando você cria uma resposta aqui no Fórum, tem um botão aí em cima "Code", clique nele, e coloque o código entre as Tags que aparecerão.

Mensagem Qua Nov 04, 2015 6:44 pm

Mensagens: 0
Beleza, vou reproduzir e te mando porque eu não salvei o puuty que usei nesse teste.

Mensagem Qua Nov 04, 2015 7:37 pm
portilho Site Admin

Mensagens: 482

Mensagem Qui Nov 05, 2015 1:12 pm

Mensagens: 0

Mensagem Seg Nov 09, 2015 12:56 pm
portilho Site Admin

Mensagens: 482
Está correto.
O SQL_ID 8crfnuafn9r3p com CHILD_NUMBER 0 foi compilado antes do STATISTICS_LEVEL = ALL, portanto não tem A-Rows.
O SQL_ID 15488hg4tst10 com CHILD_NUMBER 1 foi compilado depois do STATISTICS_LEVEL = ALL, portanto tem A-Rows.

Mensagem Seg Nov 09, 2015 1:25 pm

Mensagens: 0
Interessante!

Então, em caso de precisar ver um plano com E-rows e A-rows eu preciso alterar a minha sessão e solicitar que o usário/aplicação execute o a query novamente até gerar um novo child_number ou ele recompilar a query novamente?

Mensagem Ter Nov 10, 2015 9:40 am
portilho Site Admin

Mensagens: 482
Para gerar o A-Rows, o SQL tem que ser executado na mesma sessão em que ocorreu o ALTER SESSION, após este.
Se o cliente não tiver como alterar o código, pode ser via TRIGGER de LOGON, ou então ALTER SYSTEM.

Próximo

Voltar para Treinamento Oracle Performance Diagnostics & Tuning

cron