17 juin 2009
3
17
/06
/juin
/2009
06:38
Bonjour,
Lors de la création d'un index (ou de sa reconstruction) sur une table à forte volumétrie, il peut être interessant ne serait ce que pour savoir si on a le temps d'entamer une sieste de savoir on l'on se situe par rapport à l'opération en cours.
Il existe pour cela une vue système qui peut nous aider. A savoir : v$session_longops
Un petit desc sur la vue, vous donnera l'ensemble des colonnes qui pour la plupart parlent d'elle même.
Je vais en citer quelques unes
- SQL_ID pour identifier la requête longue en question
- START_TIME pour indentifier l'heure de début d'execution
- ELAPSED_TIME pour identifier le temps déjà écoulé.
- MESSAGE pour connaitre l'action en cours
et bien sur TIME_REMAINING pour avoir une idée de combien temps il reste pour l'opération en cours...
Il sera également possible bien sur d'idenitfier la session effectuant l'opération longue via les colonnes SID et SERIAL#
Une requête assez simple du type nous donnera donc des informations importantes
SELECT Message,Time_Remaining FROM V$session_longops
WHERE Time_Remaining>0;
exemple:

Le resultat suivant nous indique que l'opération en cours est un "Sort Output", que le traitement à parcouru 260822 blocs sur 462733 et qu'il reste environ 527 secondes avant la fin du traitement.
Attention : à une instruction SQL ne corresponds pas forcement une et une seule opération.... La création d'un index est constitué des plusieurs actions... Mais cela fera l'objet d'un autre post.
Dans l'exemple, j'ai parlé de création d'index, mais il peut bien sur s'agir d'autres opérations.....
LAO.
Lors de la création d'un index (ou de sa reconstruction) sur une table à forte volumétrie, il peut être interessant ne serait ce que pour savoir si on a le temps d'entamer une sieste de savoir on l'on se situe par rapport à l'opération en cours.
Il existe pour cela une vue système qui peut nous aider. A savoir : v$session_longops
Un petit desc sur la vue, vous donnera l'ensemble des colonnes qui pour la plupart parlent d'elle même.
Je vais en citer quelques unes
- SQL_ID pour identifier la requête longue en question
- START_TIME pour indentifier l'heure de début d'execution
- ELAPSED_TIME pour identifier le temps déjà écoulé.
- MESSAGE pour connaitre l'action en cours
et bien sur TIME_REMAINING pour avoir une idée de combien temps il reste pour l'opération en cours...
Il sera également possible bien sur d'idenitfier la session effectuant l'opération longue via les colonnes SID et SERIAL#
Une requête assez simple du type nous donnera donc des informations importantes
SELECT Message,Time_Remaining FROM V$session_longops
WHERE Time_Remaining>0;
exemple:

Le resultat suivant nous indique que l'opération en cours est un "Sort Output", que le traitement à parcouru 260822 blocs sur 462733 et qu'il reste environ 527 secondes avant la fin du traitement.
Attention : à une instruction SQL ne corresponds pas forcement une et une seule opération.... La création d'un index est constitué des plusieurs actions... Mais cela fera l'objet d'un autre post.
Dans l'exemple, j'ai parlé de création d'index, mais il peut bien sur s'agir d'autres opérations.....
LAO.