Met PL/SQL-profilering kunnen metingen uitgevoerd worden van de doorlooptijd van PL/SQL-code. Via Instellingen kun je PL/SQL-profilering inschakelen voor alle PL/SQL-aanroepen vanuit schermen en achtergrondprocessen.
Stappen:
•Profilering inschakelen via ‘Instellingen’.
•Profilering kost veel I/O bandbreedte. Daarom indien mogelijk eerst de achtergrondplanners uitschakelen.
•Gebruik in site.properties de gebruiker ‘bubs’ i.p.v. ‘bubs_tomcat’ gebruiken vanwege rechten:
bubs_tomcat.user=bubs
bubs_tomcat.password=bubs
•Let op: hierdoor heeft de applicatie volledige toegang tot Invantive Estate, niet alleen via de vrijgegeven
•!
•Tomcat herstarten (‘/etc/init.d/bubs3 restart’ of ‘net stop ‘Apache Tomcat’’, ‘net start ‘Apache’ Tomcat’).
De resultaten kun je opvragen met:
select r.runid
, u.unit_type
, u.unit_name
, d.line#
, d.total_occur
, d.total_time/1e9 total_time_ms
, s.text
from plsql_profiler_runs r
join plsql_profiler_units u
on r.runid = u.runid
join plsql_profiler_data d
on u.unit_number = d.unit_number
and u.runid = d.runid
/* Optioneel */
join user_source s
on s.line = d.line#
and s.name = u.unit_name
and s.type = u.unit_type
where r.runid = :runid
and d.total_time/1e9 > 1/100 /* Meer dan 1/100 seconde. */
order
by d.total_time desc
De uitkomsten zien er als volgt uit:
Het is ook mogelijk om handmatig PL/SQL-procedures te profileren met:
declare
l varchar2(2000);
begin
dbms_profiler.start_profiler();
dbms_output.put_line('s=' || to_char(sysdate, 'hh24miss'));
for i in 1..1000 loop
select cig_omschrijving
into l
from bubs_mijn_rechten_r
;
end loop;
dbms_output.put_line(to_char(sysdate, 'hh24miss'));
dbms_profiler.stop_profiler();
end;