Bonjour,
Je débute en perl et j'ai du mal avec les regexp...
Voila j'ai un fichier texte tkprof et je voudrais, à partir de celui-ci, créer un autre fichier contenant que les données qui me seront utiles pour les passer dans un excel par exemple.
Voici le début du fichier texte tkprof que je peux avoir en entrée :
TKPROF: Release 9.2.0.1.0 - Production on Ve Mar 21 11:02:43 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Trace file: /save/udump/trace_helios3/ora03656.trc
Sort options: default
********************************************************************************
count = number of times OCI procedure was executed
cpu = cpu time in seconds executing
elapsed = elapsed time in seconds executing
disk = number of physical reads of buffers from disk
query = number of buffers gotten for consistent read
current = number of buffers gotten in current mode (usually for update)
rows = number of rows processed by the fetch or execute call
********************************************************************************
alter session set nls_date_format = 'DD-MM-YYYY HH24:MI:SS'
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 3 0.02 0.01 0 0 0 0
Execute 3 0.00 0.00 0 0 0 0
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 6 0.02 0.01 0 0 0 0
Misses in library cache during parse: 0
Optimizer goal: CHOOSE
Parsing user id: 57
********************************************************************************
SELECT
BO_MACRO_RAPPORT.NOM_RAPPORT
FROM
BO_MACRO_RAPPORT
WHERE
(
BO_MACRO_RAPPORT.NOM_RAPPORT_PILOTE = 'PILOTE_EN_COURS_CLIENT'
)
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 4 0.14 0.15 0 0 0 0
Execute 2 0.00 0.00 0 0 0 0
Fetch 4 0.00 0.00 0 4 8 2
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 10 0.14 0.15 0 4 8 2
Misses in library cache during parse: 0
Optimizer goal: CHOOSE
Parsing user id: 57
********************************************************************************
Dans ce fichier apparait toutes les requêtes passées avec des stats. Le but serait de récupérer chaque requête (SELECT, INSERT, DELETE, ALTER, etc) et les stats concernant la colonne "elapsed" pour chacune d'entre elle.
J'y suis arrivé avec un script ksh mais je pense que perl est plus adapté pour cela mais j'ai beaucoup de mal...
On devrait obtenir ceci en sortie :
SELECT * FROM SYS.SESSION_ROLES WHERE ROLE = 'DBA'
~0.27~0.00~0.00~0.27
SELECT pc_user_def.password , pc_user_def.user_skey , pc_user_def.profile_skey , pc_user_def.first_name , pc_user_def.mi , pc_user_def.last_name , pc_user_def.active_ind FROM pc_user_def WHERE pc_user_def.user_id =:1
~0.47~0.00~0.00~0.47
BEGIN HELIOS.SESSION_COMMENCER2( :0,:1,:2); END;
~0.03~0.73~0.00~0.76
SELECT TLS.LOGIN_UTILISATEUR || ' / ' || VSS.TERMINAL FROM V_OSUSER2 VSS,SESSION_UTILISATEUR SSU,UTILISATEUR TLS WHERE SSU.SESSION_ID (+) = VSS.SID AND TLS.UTILISATEUR_ID (+) = SSU.UTILISATEUR_ID
~0.45~0.09~3.38~3.92
Partager