Avalados por :

Análise de comportamento estranho em sistema de teste: Planos de execução incorretos após cópia do cliente?

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

Olá especialistas,

Gostaria de compartilhar com vocês um comportamento estranho que tenho notado em um sistema de teste.

SO                   Win 2008R2 SP1

Oracle             11.2.0.3 PATCH 15

SAP                 ECC 6 Ehp (NW 731)

Brtools             7.20 (31)

Tenho notado alguns planos de execução incorretos após a cópia do cliente.

Realizei outra cópia neste fim de semana e revisei cuidadosamente o que estava acontecendo e não coincide de forma alguma com o que li/aprendi.

Mesmo que o monitoramento de tabelas esteja ativo, a tabela DBA_TAB_MODIFICATIONS não foi atualizada após a cópia do cliente (cópia do cliente de produção no sistema de teste).

mostrar parâmetro estatísticas

NOME                                 TIPO        VALOR

optimizer_use_pending_statistics     boolean     FALSE

statistics_level                     string      TYPICAL

timed_os_statistics                  integer     0

timed_statistics                     boolean     TRUE

selecionar monitoramento, contar(1) de dba_tablas onde proprietário = 'SAPSR3' agrupar por monitoramento;

MON   COUNT(1)

SIM   85195

Antes da cópia:

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

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

18030     71041559      5727108     63098779

Depois da cópia:

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

4 Respuestas

0
Cargando...

Olá Stefan

Muito obrigado pela informação. Eu não estava ciente de que o atributo de monitoramento estava obsoleto.

_optimizer_join_factorization está configurado como TRUE no sistema onde encontrei o erro.

Vou revisar as modificações durante a próxima cópia do cliente, executando diretamente a consulta usada pela visualização DBA_TAB_MODIFICATIONS sem usar o operador de junção.

Cumprimentos

Yves

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

Olá Yves,

> Mesmo que o monitoramento de tabelas esteja ativo, o DBA_TAB_MODIFICATIONS não foi atualizado após a cópia do cliente (cópia do cliente de produção no sistema de teste).

Antes do Oracle 10g, existia um atributo de monitoramento para tabelas. A partir do Oracle 10g, as palavras-chave MONITORING e NOMONITORING estão obsoletas e o monitoramento de tabelas é controlado pelo STATISTICS_LEVEL. No entanto, você o configurou como TYPICAL e deveria funcionar.

> Farei uma nova cópia em alguns dias, verificarei se o DBA_TAB_MODIFICATIONS é atualizado ao emitir um DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO

... e se não - verificar o fator de junção para o UNION ALL em DBA_TAB_MODIFICATIONS. Existe um erro conhecido se "_optimizer_join_factorization" estiver configurado como TRUE. (ignorando coisas como particionamento personalizado de tabelas, etc. em total - http://scn.sap.com/thread/3413348 )

Cumprimentos

Stefan

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

Olá Rishi,

Muito obrigado pela informação, não sabia desse aviso... mas já obtive essa informação de outro lugar.

1865098 - Eliminações e inserções não são atualizadas no código de transação DB20.

Mas o DBA_TAB_MODIFICATIONS não é atualizado imediatamente após a execução das declarações DML.
No Oracle 11g, é atualizado uma vez a cada 3 horas. Portanto, se você verificar mais tarde, verá o resultado correto.

Se a informação for necessária imediatamente, execute o procedimento FLUSH_DATABASE_MONITORING_INFO no pacote PL/SQL DBMS_STATS para popular essa visualização com as informações mais recentes.

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

- Os dados são excluídos da memória para o dicionário de dados "regularmente". A cada 3 horas no Oracle 9, a cada 15 minutos no Oracle 10.1 e parece que apenas quando uma declaração dbms_stats.gather é executada no 10.2.

O problema é que o Br*Tool está iniciando a análise de estatísticas disparando um DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO

(Ative o rastreamento de SQL para Br*Tools ao executar a atualização de estatísticas com a opção -TRC 2 ). Portanto, você deveria ter atualizado DBA_TAB_MODIFICATIONS e calculado estatísticas. O cenário de cópia foi uma criação de cliente, portanto, apenas algumas linhas foram excluídas. Levou 6 horas para ser concluído e no final nada foi atualizado em DBA_TAB_MODIFICATIONS .

O pior é que não verifiquei DBA_TAB_MODIFICATIONS após executar o Br*Tools para ver se havia sido atualizado.

Farei uma nova cópia em alguns dias, verificarei se DBA_TAB_MODIFICATIONS é atualizado ao emitir um DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO

Saudações

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

Olá,

Para o cálculo a seguir, você deve usar o 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

ou

<número_registros_antiguos> - <número_registros_eliminados>

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

O que a nota da SAP diz é que a entrada não mudará imediatamente, você precisa dar tempo para que isso aconteça.

Por favor, verifique isso,

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

Obrigado

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?