stockage Oracle d'examen en cours d'exécution à long

Vérifiez aujourd'hui à une scène étrange, le temps d'exécution de la procédure stockée Oracle est trop long, a été exécuté deux jours, toujours en cours d'exécution, ce qui est évidemment pas normal.
Après l'inspection des dossiers pour faciliter la visualisation plus tard

1. Recherche d' emploi plus dans la course

* De DBA_JOBS_RUNNING Sélectionnez
Trouvé ce travail: 1542, sid: 1352 du 30 Mars 2018, est allé jusqu'à (3 Avril, 2018) ne sont pas pris fin.

2. exécution de la requête de la tâche de procédure stockée

* De DBA_JOBS Sélectionnez où l'emploi = 1542
Par quel domaine, trouvé JOB1542, procédure stockée est exécutée: pack_jigl_interface.auto_main_call (sysdate-1);
auto_main_call qui appelle le procédé par quatre processus de découverte d'enregistrement est en cours d'exécution PROC_E_MP_POWER_CURVE.

3. Il n'y a pas de blocage requête de table affectant le processus de mise en œuvre

Sélectionnez Distinct
              b.owner, b.object_name,
              c.username,
              a.Session_id,
              c.serial #, c.status, pro.spid, d.job, E. Quelles, c.Prev_exec_start,
              a.Locked_mode, ronde ((sysdate - c.Prev_exec_start) * 24 * 60) DiffMinutes,
              l.type, l.ctime, area.SQL_TEXT

De     

                  v $ locked_object un
      rejoindre v dba_objects de $ b sur a.object_id = b.object_id 
      v session commune $ c sur a.session_id = c.SID
      rejoindre v verrou $ l = sur a.Locked_mode l.Lmode et l.SID = c.SID et l.type dans ( 'TX', 'TM')
jointure gauche v $ zone SQLAREA sur c.SQL_HASH_VALUE = area.HASH_VALUE
jointure gauche v processus $ pro sur pro.addr = c.paddr
jointure gauche v $ d dba_jobs_running sur d.sid = a.session_id et d.sid = c.sid
gauche se joindre v $ e dba_jobs sur d.job = e.job
commander par SESSION_ID;

Aucun processus de découverte impasse de la table.

4. Trouvez par procédure stockée SID qui maintenant STATEMENT est en cours d' exécution

- par sid, trouver sql_id (sid par le DBA_JOBS_RUNNING ci-dessus se trouve)

Sélectionnez SID, SQL_ID de V $ SESSION où SID = 1352
- examiner le plan d'exécution
Select * from V $ SESSION_LONGOPS où SID = 1352 et sql_id = 'fjqaw14x82qba'
- examen SQL en cours d'exécution
Select * from V $ sql où sql_id =  'fjqaw14x82qba'

déclaration grippés insérer des données dans le tableau A Tableau dbLink B.
Après analyse, il existe deux types de circonstances conduire à

1. impasse de la base de données dbLink. Nous avons attendu
2. raison réseau, connexion intermittente dbLink

Enfin, les raisons spécifiques de ne pas savoir. L'utilisation
'SID, numéro de série' KILL SESSION ALTER SYSTEM IMMÉDIATE

La fin du processus.
Une autre, https: //www.cnblogs.com/harvey888/p/6710902.html un article similaire, bien écrit, copié, pour faciliter l'accès futur à:

Pourquoi la procédure stockée Oracle pendant longtemps être coincé

1: Charles V $ DB_OBJECT_CACHE

SELECT * FROM V $ DB_OBJECT_CACHE OÙ name = 'CUX_OE_ORDER_RPT_PKG' ET BLOCAGE = '0'!;

Note: CUX_OE_ORDER_RPT_PKG le nom de la procédure stockée.

Constaté que serrures = 2

2: Appuyez sur l'objet isolé valeur sid

sélectionner / * + règle * / SID de V $ ACCÈS OU objet = 'CUX_OE_ORDER_RPT_PKG';

Note: CUX_OE_ORDER_RPT_PKG le nom de la procédure stockée.

3: vérification sid, série #

SELECT SID, NUMÉRO DE SÉRIE, PADDR DE V SESSION $ OU SID = 'juste trouvé le SID';

4, selon l'ID de session (sid), cet événement d'attente de la session:

[sql] la vue copie
  1. select *  from v $ session  où sid = ***;  

événement est l'attente sur le terrain pour l'événement. Après enquête, nous avons trouvé la session d'attendre l'événement pour SQL * Message net de dblink, session de visionnage logon_time était il y a deux jours. Cette fois-ci, nous sommes beaucoup plus que le temps estimé.

5, voir la déclaration sql cette session est effectuée sur la base l'identifiant de session

[sql] la vue copie
  1. sélectionnez sql_text  de v SQLAREA de $  où adresse = ( select sql_address   de v $ session  où sid = ***);  

Une fois la requête instruction SQL trouvée est exécutée par la base de données distante dblink pour interroger les tables de données A, B sont insérés dans la table.

6, se connecter à une base de données distante, la requête de l'objet courant est verrouillé

[sql] la vue copie
  1. select *  from v $ locked_object lo,   
  2. all_objects ao     où lo.OBJECT_ID = ao.object_id;  

Après un examen de la base de données distante ne se trouve pas à se rapporter à la A, table B est verrouillé

7, les données de visualisation à distance des sessions:

[sql] la vue copie
  1. select *  from v $ session  où la borne  comme  '%机器名%'   et programme = 'ORACLE.EXE'  

connexion dbLink en utilisant une base de données distante, session de programme sur la base de données distante doit être oui oui oracle.exe

Après l'enquête a révélé que deux bibliothèques distantes parfois session associée, parfois il peut être lié à la session, mais il est en attente pour l'événement SQL * Message net des bibliothèques à distance du client pour Oracle locale lui a envoyé une demande.

 

Les bibliothèques locales dbLink base de données distante, en attente de base de données à distance pour les messages des clients. Il semble qu'il est impossible d'exécuter la procédure stockée est terminée.

Quelles sont les raisons spécifiques, et peu claires.

-------------------------------------------------- -------------------------------------------------- -----------------------------

Publié 35 articles originaux · louange gagné 61 · vues 160 000 +

Je suppose que tu aimes

Origine blog.csdn.net/woailyoo0000/article/details/79800301
conseillé
Classement