sql >> Databasteknik >  >> RDS >> Oracle

Använd gv$session för att se om en fråga hänger sig

I gv$session , event kolumnen berättar vilken väntehändelse din session väntar på. Om din session väntar på någon form av lås som hålls av en annan session, event kommer att berätta för dig att (det kommer till exempel att vara "enq:TX - radlåskonflikt" om du står i kö och väntar på att låsa en rad som hålls av en annan session) och blocking_instance och blocking_session kommer att fyllas i med instansen och sessions-ID för innehavaren av låset. Du kan också titta på seconds_in_wait (om wait_time=0 ) för att avgöra hur många sekunder sessionen har spenderat i den aktuella väntehändelsen. Det borde åtminstone tala om för dig om din session för närvarande har "fastnat", men den säger inte om din fråga någonsin verkligen kommer att slutföras - om det finns en dålig plan är det fullt möjligt att du har "bra" wait-händelser som väntar på disk I/O som indikerar att sessionen gör något men att frågan aldrig riktigt kommer att slutföras.



  1. Vilolägesfel:aktuell transaktion avbryts, kommandon ignoreras till slutet av transaktionsblocket

  2. Returnera PostgreSQL UUID-array som lista med psycopg2

  3. Kommer Oracle att låsa hela tabellen medan du utför en DML-sats eller bara raden

  4. SQL Server:Ersätt ogiltiga XML-tecken från ett VARCHAR(MAX)-fält