Bonjour à tous,
Je suis sous Oracle 11g 11.2.0.3.0 64 bits sous Windows que je suis en train d'aborder, je suis en train de faire quelques essais pour afficher une procédure stockée dans V$SESSION_LONGOPS en passant par DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS. L'idée étant de pouvoir suivre les stats de procédures personnelles qui vont durer quelques minutes, ma procédure n'étant pas listée dans V$SESSION_LONGOPS initialement, j'ai du faire en sorte de l'y inclure.
J'ai pris un exemple sur le net que j'ai personnalisé, j'ai inclus une procédure stockée dans une boucle WHILE qui incrémente la valeur SOFAR de 1 jusqu'à 10 et ça fonctionne parfaitement. Je souhaite si possible personnaliser la valeur de target_desc (valeur en rouge dans le code ci-dessous), ce qui permettrait lors de la récupération des statistiques sur le déroulé de la procédure, de pouvoir visualiser à quelle stade elle en est.
Dans l'exemple ci-dessous, j'essaie de faire varier target_desc en fonction de la valorisation de sofar :
En résultat, j'ai "Debut de proc" tout au long du déroulé de la procédure.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 DECLARE rindex BINARY_INTEGER; slno BINARY_INTEGER; totalwork number; sofar number; obj BINARY_INTEGER; BEGIN rindex := dbms_application_info.set_session_longops_nohint; sofar := 0; totalwork := 10; WHILE sofar < 10 LOOP maProc(3, sofar); dbms_output.put_line(sofar); sofar := sofar + 1; if sofar = 1 then dbms_application_info.set_session_longops(rindex, slno, 'ProcPerso', obj, 0, sofar, totalwork, 'Debut de proc', 'tables'); elsif sofar > 1 then dbms_application_info.set_session_longops(rindex, slno, 'ProcPerso', obj, 0, sofar, totalwork, 'Suite de la proc', 'tables'); end if; END LOOP; getsid; commit; END;
Sauriez-vous si cette manip est possible ?
Je vous remercie et bonne soirée,
C. Tobini
Partager