oracle monitoring sql - ghdrako/doc_snipets GitHub Wiki

V$SESSSION_LONGOPS

select * from v$session_longops where time_remaining > 0;

V$SQL_MONITOR

  • Ile rzeczywiście przetworzył wierszy (ROWS_PROCESSED)
  • Ile czasów i zasobów już zużyto
  • Jakie operacje (np. INSERT, TABLE ACCESS FULL) są aktywne
SELECT * FROM v$sql_monitor WHERE status = 'EXECUTING'; -- dla Enterprise Edition wersji 11g (z opcją monitoring) i pełniej od 12c+
  • ROWS_PROCESSED - ile rekordow przetworzyl

V$SQL_PLAN_MONITOR

Wiecej szczegolow na poziomie kroków w planie zapytania - ile zostalo do zakoczenia

  • sofar – ile już zrobiono
  • totalwork – ile Oracle oszacował jako całość
  • percent_done – ile % już wykonano
SELECT 
    sql_id,
    operation_name,
    sofar,
    totalwork,
    ROUND((sofar / NULLIF(totalwork, 0)) * 100, 2) AS percent_done,
    start_time,
    last_update_time
FROM v$sql_plan_monitor
WHERE status = 'EXECUTING';

Oracle nie zawsze wypełnia totalwork – tylko dla niektórych typów operacji (np. TABLE SCAN, INSERT, HASH JOIN).

Aby V$SQL_MONITOR działał:

  • Musi być włączony SQL Monitoring (automatycznie przy dużych zapytaniach lub wymuszony hintem MONITOR).
  • Masz licencję Oracle Enterprise Edition z Tuning Pack? → Wtedy masz pełne wsparcie.

DBMS_SQLTUNE.REPORT_SQL_MONITOR

Pełny raport HTML lub tekstowy