Vérifier l'état de la requête sql ou en pourcentage
Personne ne sait si il existe un moyen de vérifier l'état d'une tâche en cours d'exécution dans la base de données ou le statut de combien de % a été effectivement exécutés.
Je suis en cours d'exécution d'un travail, mais le travail prend beaucoup de temps donc je voudrais vérifier combien de % a été exécuté à partir de la requête. Je suis en cours d'exécution de la requête dans Oracle sqldeveloper
OriginalL'auteur Eve | 2012-01-25
Vous devez vous connecter pour publier un commentaire.
En raison de la mise en fonction de la nature de SQL et de traitement de base de données, vous ne pouvez pas vraiment obtenir un " % " d'une requête depuis l'oracle moteur n'a pas vraiment sûr. Vous pourriez essayer de regarder la vue v$session_longops pour voir dans quelle mesure le long de certaines parties de votre SQL a disparu (un grand jointure de hachage ou full table scan peut afficher jusqu'ici). Jetez un oeil à c'Demander à Tom pour plus d'info.
Si votre travail a plusieurs instructions SQL et vous êtes en train de suivre combien de temps vous êtes après chacun d'eux, vous pouvez ajouter un peu de code pour insérer des mises à jour de statut sur une table de contrôle après chaque instruction.
Vous n'avez pas besoin d'un supplément de "tableau de contrôle". Vous pouvez utiliser
DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS
de "crochet" dans v$session_longops à partir de votre propre code. docs.oracle.com/cd/B28359_01/appdev.111/b28419/...Je parlais de suivre un ensemble d'instructions SQL en cours d'exécution dans une procédure stockée - l'OP n'est pas clair qu'il s'agissait d'une déclaration ou d'un groupe qu'elle souhaitait piste, elle a juste dit "un emploi dans la base de données" - et je ne le conseille pas à l'aide de longops pour suivre votre logique métier, mieux vaut avoir un persisté magasin que vous gérez vous-même de sorte que vous pouvez revenir en arrière et de regarder.
OriginalL'auteur N West
La
output_rows
colonne dans cette requête peut être utile si votre requête n'est pas dansv$session_longops
. Le problème est que vous ne savez pas ce que le total des lignes de sortie.OriginalL'auteur Superdooperhero
Vous pouvez vérifier gv$session_longops où time_remaining>0;
sélectionnez sid,target_desc,(Sofar*100)/totalwork comme percentage_complete de gv$session_longops
serait vous donner le pourcentage de.
OriginalL'auteur Rajesh Singam