almacenamiento de Oracle examen de larga duración

Compruebe hoy para una escena extraña, Oracle almacenado tiempo de ejecución del procedimiento es demasiado largo, se ha ejecutado dos días, aún en marcha, esto obviamente no es normal.
Después de la inspección de los registros para facilitar su posterior visualización

1. Consulta de Job más en la gestión

SELECT * FROM DBA_JOBS_RUNNING
Encontrado ese trabajo: 1542, SID: 1352 del 30 de marzo, 2018, fue tan lejos (3 de abril, 2018) no han terminado.

2. ejecución de la consulta del trabajo de procedimiento almacenado

SELECT * FROM DBA_JOBS donde trabajo = 1542
Por lo campo, encontrado JOB1542, se ejecuta procedimiento almacenado: pack_jigl_interface.auto_main_call (sysdate-1);
auto_main_call que llama al cuatro proceso por el proceso de descubrimiento de registro está siendo ejecutado PROC_E_MP_POWER_CURVE.

3. No hay estancamiento consulta de tabla que afecta el proceso de implementación

Seleccionar distinto
              b.owner, b.object_name,
              c.username,
              a.Session_id,
              # c.serial, c.status, pro.spid, d.job, e.what, c.Prev_exec_start,
              a.Locked_mode, Ronda ((sysdate - c.Prev_exec_start) * 24 * 60) DiffMinutes,
              l.type, l.ctime, area.SQL_TEXT

Desde     

                  v $ locked_object una
      v $ unirse a dba_objects b en a.object_id = b.object_id 
      v $ unirse a la sesión c en a.session_id = c.SID
      unirse a v $ l de bloqueo en a.Locked_mode = l.Lmode y l.SID = c.SID y l.type en ( 'TX', 'TM')
izquierda se unen v $ sqlarea área de c.SQL_HASH_VALUE = area.HASH_VALUE
izquierda se unen v $ proceso en profesional el pro.addr = c.paddr
izquierda se unen v $ dba_jobs_running d en d.sid = a.session_id y d.sid = c.sid
izquierda se unen v $ dba_jobs e en d.job = e.job
ordenar por SESSION_ID;

No hay proceso de descubrimiento de estancamiento mesa.

4. Buscar por SID procedimiento almacenado ahora qué instrucción se está ejecutando

- por Sid, encontrar SQL_ID (SID por el DBA_JOBS_RUNNING por encima de ser encontrado)

Seleccione SID, SQL_ID de V $ SESSION donde SID = 1352
- examinar el plan de ejecución
Seleccionar * de V $ SESSION_LONGOPS donde SID = 1,352 y SQL_ID = 'fjqaw14x82qba'
- se realiza el examen de SQL
Seleccionar * de V $ sql donde SQL_ID =  'fjqaw14x82qba'

declaración atascado para insertar datos en la Tabla A Tabla dblink B.
Tras el análisis, hay dos tipos de circunstancias conducir a

1. DBLink estancamiento base de datos. Hemos estado esperando
2. razón de red, conexión intermitente DBLink

Por último, las razones específicas que no se enteran. Uso
ALTER SISTEMA DE MATAR DE SESIONES 'SID, serial #' INMEDIATA

El final del proceso.
Otro, https: //www.cnblogs.com/harvey888/p/6710902.html tener un artículo similar, bien escrito, copiado, para facilitar el acceso futuro a:

Ver por qué Oracle procedimiento almacenado durante mucho tiempo para estar atascado

1: Charles V $ DB_OBJECT_CACHE

* SELECT FROM V $ DB_OBJECT_CACHE WHERE nombre = 'CUX_OE_ORDER_RPT_PKG' y cerraduras = '0'!;

Nota: CUX_OE_ORDER_RPT_PKG el nombre del procedimiento almacenado.

Encontrado que cerraduras = 2

2: Pulse el valor sid objeto aislado

seleccionar / * + * regla / SID de V $ ACCESO DONDE objeto = 'CUX_OE_ORDER_RPT_PKG';

Nota: CUX_OE_ORDER_RPT_PKG el nombre del procedimiento almacenado.

3: sid cheque, número de serie

SELECCIONAR SID, serial #, PADDR DE V $ sesión donde SID = 'acaba de encontrar el SID';

4, de acuerdo con el identificador de sesión (SID), este tipo de eventos sesión de espera:

  1. seleccionar *  de v $ session  donde sid = ***;  

evento es el campo de espera para el evento. Tras una investigación encontramos la sesión que esperar a que el evento mensaje de SQL * Net de dblink; visualización logon_time sesión fue hace dos días. Esta vez son mucho más que el tiempo estimado.

5, ver la instrucción SQL esta sesión se realiza basándose en el identificador de sesión

  1. seleccione sql_text  de v $ sqlarea  donde dirección = ( seleccione sql_address   de v $ session  donde sid = ***);  

Después de la consulta se ejecuta la instrucción SQL se encuentran por el dblink base de datos remota para consultar las tablas de datos A, B se inserta en la tabla.

6, conexión a una base de datos remota, consulta el objeto actual está bloqueado

  1. seleccionar *  de v $ locked_object he aquí,   
  2. all_objects ao     donde lo.OBJECT_ID = ao.object_id;  

Después no se encuentra una revisión de la base de datos remota de relacionarse con la A, B tabla está bloqueado

7, los datos de visualización remota sesiones:

  1. seleccionar *  de v $ session  donde el terminal  como  '%机器名%'   y el programa = 'oracle.exe'  

dblink conexión utilizando una base de datos remota, sesión de programa en la base de datos remota debe ser sí sí oracle.exe

Después de la investigación encontró que no hay dos bibliotecas remotas veces se asocian sesión, a veces puede estar relacionado con la sesión, pero está a la espera para el evento de SQL * Net mensaje de bibliotecas remotas cliente de Oracle locales le envió una solicitud.

 

Las bibliotecas locales dblink base de datos remota, en espera de base de datos remota de mensajes de cliente. Parece que es imposible ejecutar el procedimiento almacenado ha terminado.

Lo específico de razones, y no está claro.

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

Publicado 35 artículos originales · ganado elogios 61 · vistas 160 000 +

Supongo que te gusta

Origin blog.csdn.net/woailyoo0000/article/details/79800301
Recomendado
Clasificación