ILO, the Method R instrumentation library for Oracle, is an open source project directed by Method R Corporation developers. It contains PL/SQL procedures for measuring tasks using Oracle extended SQL trace. The procedures are installed and compiled in the target Oracle instance and can be called by code written in any language that has access to the Oracle database tier.
Over 7,200 downloads at sourceforge.net.
Diagnosing and repairing performance problems in an Oracle environment can be a complicated and time-consuming job. However, the application developer can make the job much simpler by inserting a few extra lines of code, called instrumentation, into your applications. With the right instrumentation library, the job is easy. The Instrumentation Library for Oracle (ILO) gives you the lines of code you need.
Instrumentation makes your code faster, easier to maintain, and cheaper to write. Instrumentation makes your code faster because it shows you all of your opportunities for making your code more efficient, right while you’re writing it. Instrumentation makes your code easier to maintain because it shows you exactly what your analysts are talking about when they say that your code is too slow. Instrumentation makes your code cheaper to write because it focuses your tuning efforts only upon the parts of your code where performance really matters. Good instrumentation is your immunization against the sins of premature optimization.
How It Works
ILO is super easy for software developers to use. You mark the beginning and end of your tasks with a single line of code, giving each task a module and action. Think of the action as the name of the task itself, and the module as the part of the application that the task represents.
Marking the beginning of any task is as simple as making a procedure call and including the values for MODULE, ACTION, and COMMENT.
When marking the end of a task, you again make a simple procedure call. Be sure to include all possible exit points of the marked task including any EXCEPTION sections in your code.
BEGIN ilo_task.begin_task( module => 'Load Transaction Tables', action => 'Begin overall load', comment => 'Execution of procedure all_trx_table_loads'); // Code to perform task goes here. ilo_task.end_task; EXCEPTION WHEN ex_insert_problem THEN ilo_task.end_task(error_num => SQLCODE); WHEN ex_update_problem THEN ilo_task.end_task(error_num => SQLCODE); WHEN others THEN ilo_task.end_task(error_num => SQLCODE); END;