Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:which_package_call_this_sql

Den Name und die Zeilennummer eines PL/SQL Package für ein SQL Statement in der DB ermitteln

Über V$SESSION und V$SQL lässt sich das PL/SQL Package ermitteln das ein bestimmtes SQL Statement aufgerufen hat.

In V$SESSION steht uns zur Verfügung (aus der Doku Database Reference 11g R2 )

  • PLSQL_ENTRY_OBJECT_ID - Object ID of the top-most PL/SQL subprogram on the stack (or NULL if there is no PL/SQL subprogram on the stack)
  • PLSQL_ENTRY_SUBPROGRAM_ID - Subprogram ID of the top-most PL/SQL subprogram on the stack (or NULL if there is no PL/SQL subprogram on the stack)
  • PLSQL_OBJECT_ID - Object ID of the currently executing PL/SQL subprogram (or NULL if executing SQL)
  • PLSQL_SUBPROGRAM_ID - Subprogram ID of the currently executing PL/SQL object (or NULL if executing SQL)

Über die V$SQL lässt sich sogar die Zeilennummer im PL/SQL Block ermitteln.

In der V$SQL kann verwendet werden (aus der Doku Database Reference 11g R2 )

  • ROGRAM_ID - Program identifier
  • PROGRAM_LINE# - Program line number

Mit der ID kann über die DBA_OBJECTS der Objekt Name ermittelt werden.

SELECT * FROM dba_objects WHERE  object_id=&MY_PROGRAM_ID

Anlayse

Das ist sehr praktisch um zum Beispiel zu analysieren, welche PL/SQL Objekte in letzter Zeit aufgerufen und welche Zeile SQL Code hier verwendet wurde:

SELECT COUNT(*)
    , obj.owner
    , obj.object_type
    , obj.object_name
    , s.PROGRAM_LINE#
    , MIN(to_date(s.first_load_time,'YYYY-MM-DD/HH24:MI:SS')) AS min_first_load
    , MAX(to_date(s.first_load_time,'YYYY-MM-DD/HH24:MI:SS')) AS max_first_load    
  FROM dba_objects obj
     , v$sql s
 WHERE s.program_id = obj.object_id
   AND s.program_id != 0
 GROUP BY obj.owner
        , obj.object_type
        , obj.object_name
        , obj.subobject_name
        , s.PROGRAM_LINE#
ORDER BY obj.owner  
Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
"Autor: Gunther Pipperr"
prog/which_package_call_this_sql.txt · Zuletzt geändert: 2015/09/24 08:53 von Gunther Pippèrr