¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Análisis de comportamiento extraño en sistema de prueba: ¿Planes de ejecución incorrectos después de copia del cliente?

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 4 Vistas
0
Cargando...

Hi experts,

Me gustaría compartir con ustedes un comportamiento extraño que he notado en un sistema de prueba.

SO                   Win 2008R2 SP1

Oracle             11.2.0.3 PATCH 15

SAP                 ECC 6 Ehp (NW 731)

Brtools             7.20 (31)

He notado algunos planes de ejecución incorrectos después de la copia del cliente.

Realicé otra copia este fin de semana y revisé detenidamente lo que estaba sucediendo y no coincide en absoluto con lo que he leído/aprendido.

Incluso si el monitoreo de tablas está activo, la tabla DBA_TAB_MODIFICATIONS no se ha actualizado después de la copia del cliente (copia del cliente de producción en el sistema de prueba).

mostrar parámetro estadísticas

NOMBRE                                 TIPO        VALOR

optimizer_use_pending_statistics     boolean     FALSE

statistics_level                     string      TYPICAL

timed_os_statistics                  integer     0

timed_statistics                     boolean     TRUE

seleccionar monitoreo, contar(1) de dba_tablas donde propietario = 'SAPSR3' agrupar por monitoreo;

MON   COUNT(1)

SÍ   85195

Antes de la copia:

seleccionar sum(INSERTS), sum(UPDATES),  sum(DELETES) de sys.dba_tab_modifications donde TABLE_OWNER ='SAPSR3';

COUNT(1) SUM(INSERTS) SUM(UPDATES) SUM(DELETES)

18030     71041559      5727108     63098779

Después de la copia:

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola Stefan

Muchas gracias por la información. No estaba al tanto de que el atributo de monitoreo estaba obsoleto.

_optimizer_join_factorization está configurado en TRUE en el sistema donde obtuve el error.

Revisaré las modificaciones durante la próxima copia del cliente ejecutando directamente la consulta utilizada por la vista DBA_TAB_MODIFICATIONS sin utilizar el operador de unión.

Saludos cordiales

Yves

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hi Yves,

> Incluso si el monitoreo de tablas está activo, DBA_TAB_MODIFICATIONS no se ha actualizado después de la copia del cliente (copia del cliente de producción en el sistema de pruebas).

Antes de Oracle 10g, existía un atributo de monitoreo para las tablas. A partir de Oracle 10g, las palabras clave MONITORING y NOMONITORING están obsoletas y el monitoreo de tablas está controlado por STATISTICS_LEVEL. Sin embargo, lo has configurado en TYPICAL y debería funcionar.

> Ejecutaré una nueva copia en unos días, verificaré si DBA_TAB_MODIFICATIONS se actualiza al emitir un DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO

... y si no - verificar el factor de unión para el UNION ALL en DBA_TAB_MODIFICATIONS. Existe un error conocido si "_optimizer_join_factorization" está configurado en TRUE. (ignorando cosas como particionamiento personalizado de tablas, etc. en total - http://scn.sap.com/thread/3413348 )

Saludos

Stefan

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Rishi,

Muchas gracias por la información, no sabía esa nota... pero ya obtuve esa información de otro lugar.

1865098 - Eliminaciones e inserciones no se actualizan en el código de transacción DB20.

Pero DBA_TAB_MODIFICATIONS no se actualiza de inmediato después de que se ejecutan las declaraciones DML.
En Oracle 11g, se actualizará una vez cada 3 horas. Por lo tanto, si lo revisas más tarde, verás el resultado correcto.

Si la información es necesaria de inmediato, ejecuta el procedimiento FLUSH_DATABASE_MONITORING_INFO en el paquete PL/SQL DBMS_STATS para poblar esta vista con la información más reciente.

https://mwidlake.wordpress.com/2009/05/26/counting-the-cost-4-the-speedy-way/

- Los datos se eliminan de la memoria al diccionario de datos "regularmente". Cada 3 horas en Oracle 9, cada 15 minutos en Oracle 10.1 y parece que solo cuando se ejecuta una declaración dbms_stats.gather en 10.2.

Lo malo es que Br*Tool está comenzando el análisis de estadísticas disparando un DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO

(Activé el rastreo de sql para Br*Tools al ejecutar la actualización de estadísticas con la opción -TRC 2 ). Por lo tanto, debería haber actualizado DBA_TAB_MODIFICATIONS y calcular estadísticas. El escenario de copia fue una creación de cliente, por lo tanto, solo se eliminaron unas pocas líneas. Se ejecutó durante 6 horas y al final no se actualizó nada en DBA_TAB_MODIFICATIONS .

Lo peor es que no revisé DBA_TAB_MODIFICATIONS después de ejecutar Br*Tools para ver si se había actualizado.

Ejecutaré una nueva copia en unos días, verificaré si DBA_TAB_MODIFICATIONS se actualiza al emitir un DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO

Saludos

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hi,

Para el cálculo a continuación, debes usar DB20.

#filas antiguas + # filas insertadas >= # filas antiguas * (100 + umbral) / 100

109225667+134074127 >= 109225667 * (100+50)/100

243299794 >= 163838501

<número_registros_antiguos> + <número_registros_agregados>

+ <número_registros_cambiados> >= <número_registros_antiguos> * (100 + 50) / 100

o

<número_registros_antiguos> - <número_registros_eliminados>

- <número_registros_cambiados> <= <número_registros_antiguos> * 100 / (100 + 50)

Lo que dice la nota de SAP es que la entrada no cambiará de inmediato, necesitas darles tiempo para que cambie.

Por favor, revisa esto,

1865098 - Deletes and inserts are not updated in transaction code DB20.

Gracias

Rishi Abrol


Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?