TIMED_STATISTICS : mise en place de la collecte des informations sur le temps d’attente d’un événement.
STATISTICS_LEVEL : Niveau de collecte des statistics (Basic, Typical ou ALL)
DB_CACHE_ADVICE : off, ready ou on
TIMED_OS_STATISTICS
SQL_TRACE
LOG_CHECKPOINT_TO_ALERT
V$systat : activité compteur de l’instance (voir aussi v$statname)
V$system_event : compteur d’attente (associé à v$event_name(name))
Session :
V$session v$sesstat v$statname
V$session_wait (temps reel) v$event_name
V$session_event (cumul)
V$mystat : stat de ma session
Exemples de requête :
select vsn.name,vst.value from v$sesstat vst,v$statname vsn where vst.sid=7 and vst.STATISTIC#=vsn.STATISTIC# order by 2
select * from v$session_wait where sid=7 |
SQL> select s.sid,s.username, n.name, t.value from v$statname n, v$session s, v$sesstat t where s.sid=t.sid and n.statistic#=t.statistic# and s.type='USER' and n.name='session pga memory' order by 4
USERNAME NAME VALUE ------------------------------ ---------------------------------------------------------------- ---------- SYS session pga memory 357848 |
Alter system set sql_trace : Setting sql_trace=true is a prerequisite when using tk prof.
Alter system set timed_statistics : Setting timed_statistics=true might be usefule when using tk prof
Mise en place de la trace sur une session :
alter system set sql_trace=true;
alter session set sql_trace=true;
sys.dbms_system.set_sql_trace_in_session(session's id,serial number, true)
alter system set timed_statistics=true;
alter session set timed_statistics=true;
Les fichiers de trace sont dans user_dump_dest de v$parameter
Une fois les traces mises, nous lancons la requete problematique, puis nous mettons à false les traces ou on se deconnecte.
Pour analyser les traces, il suffit d’aller dans le repertoire de log et de lancer « tkprof ‘nom_fic_trc’ ‘fic_out’ »
Divers
Connaître le plan d’une requete : ‘explain plan for’
Connaître activité user : trace tkprof
Mise en place des traces : ‘alter session set SQL_TRACE true ;’
Voir plan d’un requete dans library cache : v$sql_plan
Dans le pfile:
sql_trace=true
user_dump_dest=$USER_DUMP_DEST
ou dans une session:exec sys.dbms_system.set_sql_trace_in_session(SID,SERIAL#,true);
Analyse des fichier traces:for i in $(ls *.trc)
do
tkprof $i $i.out explain=system/cdcmgr sys=no sort=prscnt,prscpu,prsela,execpu,execnt,exerow,exemis,fchcpu,fchela,fchdsk,fchrow,userid waits=yes
done
SELECT se.osuser, se.username, se.sid,su.extents, su.blocks * to_number(rtrim(p.value)) AS Space,tablespace
FROM v$sort_usage su, v$parameter p, v$session seWHERE p.name = 'db_block_size'
AND su.session_addr = se.saddr
select s.sid,s.username, n.name, t.value
from v$statname n, v$session s, v$sesstat t
where s.sid=t.sid
and n.statistic#=t.statistic#
and s.type='USER'
and n.name='session pga memory'
order by 4
SET LONG 2000
set linesize 2000
set pagesize 2000
set time on
set timing on
set autotrace traceonly explain
select * from v_today_diffusions;
-- explain plan for select * from v_today_diffusions;
-- select plan_table_output from table(dbms_xplan.display('plan_table',null,'serial'));
exit