J’imagine que ce script ne servira pas à tout le monde mais, si vous avez un RAC 10 noeuds et si vous avez les licences diagnostic pack, voici comment générer les 10 rapports AWR d’un coup ! Sinon, vous n’aurez pas de problème à l’adapter à bos besoins.
Etape 1 : Créer un snapshot
sqlplus / as sysdba
exec dbms_workload_repository.create_snapshot
exit;
Etape 2 : Lister les snapshots
Vous pouvez ensuite lister les snapshots avec le script ci-dessous :
sqlplus / as sysdba
alter session set nls_date_format='DD/MM/YYYY HH24:MI:SS';
col begin_interval_time format a22
accept listdays prompt "Enter number of days you want to query the snapshots (e.g. 1) : "
select s.dbid, s.snap_id,
to_char(s.begin_interval_time,
'DD/MM/YYYY HH24:MI') begin_interval_time
from dba_hist_snapshot s,
v$database d,
v$instance i
where s.dbid=d.dbid
and i.instance_number=s.instance_number
and begin_interval_time>=
(sysdate- &&listdays)
order by snap_id;
exit;
Etape 3 : générer les 10 rapports
Enfin, le script ci-dessous génère tous les rapports AWR simultanement
for i in 1 2 3 4 5 6 7 8 9 10; do
sqlplus /nolog <<EOF
connect /as sysdba
@?/rdbms/admin/awrrpti
text
652855321
$i
1
9094
9096
exit
EOF
done
Remplacez les 3 valeurs en rouge successivement par :
- Le DBID de la base de données
- Le snapshot de début de vos rapports
- Le snapshot de fin de vos rapports
Etape 4 : une autre requête
Une autre requête utile si vous avez des serveurs d’applications devant votre base de données (Okay, c’est du basique mais ça n’empêche pas de s’en servir), ne serait-ce que pour voir se les connexions sont bien équilibrées entre les nœuds de votre cluster :
sqlplus / as sysdba
select inst_id, count(*)
from gv$session
where username is not null
group by inst_id
order by inst_id;