Vraag Vraag erg langzaam na een paar keer uitvoeren


Ik ben een nieuw lid van het orakel en nu word ik gek van de volgende situatie. Ik werk aan een oracle 11g-database en het gebeurt vaak dat ik een query uitvoer met sql-ontwikkelaar en dit wordt correct uitgevoerd in 5/6 seconden, terwijl anderen in dezelfde query 300/400 seconden nodig hebben om te worden uitgevoerd. Er zijn enkele hulpmiddelen om te debuggen wat er gebeurt als de query 300/400 seconden in beslag neemt?

Update 1  Dit is mijn sql-ontwikkelaar screenshot, het probleem lijkt te zijn directe weg lees-temp

enter image description here

Update 2 verslag doen van

Update 3 verslag2

Enige suggestie?


10
2018-04-29 13:05


oorsprong


antwoorden:


Probeer een spoor in te stellen. Gebruiker is ongeacht welke gebruiker de vertraging ondervindt
As sys:

GRANT ALTER SESSION TO USER;

Zoals de gebruiker de trace uitvoert:

ALTER SESSION SET EVENTS '10046 trace name context forever, level 8';
ALTER SESSION SET TRACEFILE_IDENTIFIER = "MY_TEST_SESSION";

Produceer de fout / het probleem en vervolgens de gebruiker die test:

ALTER SESSION SET EVENTS '10046 trace name context off';

Terwijl het systeem uitzoekt waar de traceerbestanden worden bewaard:

show parameter background_dump_dest;

Ga naar die map en zoek naar .trc / .trm-bestanden met MY_TEST_SESSION. Bijvoorbeeld ORCL_ora_29772_MY_TEST_SESSION.trc.
Daarna tkprof die bestanden. In linux:

tkprof ORCL_ora_29772_MY_TEST_SESSION.trc output=ORCL_ora_29772_MY_TEST_SESSION.tkprof explain=user/password sys=no

Lees het tkprof-bestand en het zal u wachttijden laten zien op gegeven verklaringen.
Voor meer informatie over TKPROF lezen deze. Voor meer informatie over het activeren / deactiveren van een traceeractie deze.


9
2018-04-29 13:46



De beste tool is Real-time SQL Monitoring. Het vereist geen code wijzigen of toegang tot het besturingssysteem. Het enige nadeel is dat je het Tuning Pack moet licenseren.

Vergelijk deze enkele regel code met de traceerstappen in het andere antwoord. Ook ziet de uitvoer er veel leuker uit.

select dbms_sqltune.report_sql_monitor(sql_id => 'your sql id', type => 'text') from dual;

Het is bijna nooit nodig om sporen te gebruiken in 11g en verder.


3
2018-04-30 07:17



Dit gedrag kan worden veroorzaakt door bugfeedback / problemen met cardinaliteit in 11gR2. Ik had een soortgelijk probleem. U kunt testen of dit het geval is door deze functie uit te schakelen met _optimizer_use_feedback=false

Probeer ook de nieuwste updates toe te passen.


0
2018-06-24 16:08