The purpose of this blog post is demonstrate again the power of Linux dynamic tracing/instrumentation tools.
In my last blog post Enhancing DBMS_OUTPUT using systemtap i showed how we can track the parameter values passed to “dbms_output.put_line” routine using systemtap.That was a very simple example because we already know the type of the arguments passed (a simple VARCHAR2) and also because there is only ONE parameter.
Tracking PL/SQL routine calls arguments using dynamic tracing utility like perf or systemtap can become quite complex depending on many things like :
- Argument types
- Argument number
- Argument passed By Value/By reference
- Subprograms type (nested/package/standalone subprogram)
- Optimization level (ex: inlining of call of procedure)
Time for the serious stuff with dynamic tracing tool PERF !