2026-03-12 20:23:15
This commit is contained in:
58
tpt/tools/collectors/mutexprof_install.sql
Normal file
58
tpt/tools/collectors/mutexprof_install.sql
Normal file
@@ -0,0 +1,58 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
drop table mutexprof_history;
|
||||
|
||||
create table mutexprof_history
|
||||
tablespace users
|
||||
as
|
||||
select
|
||||
*
|
||||
from
|
||||
x$mutex_sleep_history
|
||||
where
|
||||
1=0
|
||||
/
|
||||
|
||||
create or replace package mutexprof as
|
||||
procedure snap_mutex_sleeps(p_sleep in number default 1);
|
||||
end mutexprof;
|
||||
/
|
||||
show err
|
||||
|
||||
create or replace package body mutexprof as
|
||||
|
||||
procedure snap_mutex_sleeps(p_sleep in number default 1) as
|
||||
lv_max_sleep_timestamp timestamp := systimestamp;
|
||||
type typ is table of x$mutex_sleep_history%rowtype;
|
||||
t typ;
|
||||
begin
|
||||
|
||||
while true loop
|
||||
|
||||
select * bulk collect into t
|
||||
from x$mutex_sleep_history
|
||||
where sleep_timestamp > lv_max_sleep_timestamp;
|
||||
|
||||
-- get max timestamp so next time we can ignore these rows
|
||||
for r in 1 .. t.count loop
|
||||
if t(r).sleep_timestamp > lv_max_sleep_timestamp then
|
||||
lv_max_sleep_timestamp := t(r).sleep_timestamp;
|
||||
end if;
|
||||
end loop;
|
||||
|
||||
-- insert
|
||||
forall r in 1 .. t.count
|
||||
insert into mutexprof_history values t(r);
|
||||
|
||||
commit;
|
||||
dbms_lock.sleep(p_sleep);
|
||||
|
||||
end loop; -- while true
|
||||
|
||||
end snap_mutex_sleeps;
|
||||
|
||||
end mutexprof;
|
||||
/
|
||||
show err
|
||||
|
||||
Reference in New Issue
Block a user