Exemplo: Listagem de métricas de rotina agregadas para um bloco anônimo
É possível usar o monitoramento de rotina para listar as métricas agregadas das instruções executadas por um bloco anônimo.
Cenário
Neste exemplo, um administrador de banco de dados (DBA) deseja visualizar as métricas agregadas de todas as instruções que são executadas por um bloco anônimo com o texto da instrução 'BEGIN ... FIM". O DBA faz a seguinte consulta para encontrar o endereço executable_id para o bloco anônimo no cache de pacotes:SELECT EXECUTABLE_ID
FROM TABLE(MON_GET_PKG_CACHE_STMT(NULL, NULL,NULL,-1)) AS T
WHERE STMT_TEXT = 'BEGIN BLAH BLAH END'O resultado retornado é:EXECUTABLE_ID
-------------------------------------------------------------------
x'01000000000000007A0000000000000000000000020020120801153841789993'
1 record(s) selected.Usando o executable_id retornado, o DBA faz a seguinte consulta para encontrar as métricas agregadas do bloco anônimo:
SELECT * FROM TABLE(MON_GET_ROUTINE('A', NULL,NULL,NULL,-2)) AS T
WHERE DYN_COMPOUND_EXEC_ID = x'01000000000000007A0000000000000000000000020020120801153841789993'O resultado retornado é:ROUTINETYPE ROUTINESCHEMA ROUTINEMODULENAME ROUTINENAME SPECIFICNAME DYN_COMPOUND_EXEC_ID
----------- --------------- ------------------ --------------------------- -------------------- -------------------------------------------------------------------
C SYSIBMINTERNAL - COMPILED_ANON_BLOCK_INVOKE SQL120801153841490 x'01000000000000007A0000000000000000000000020020120801153841789993'
1 record(s) selected.Como alternativa, o DBA pode procurar o procedimento interno e o nome do esquema correspondente ao bloco anônimo usando a função de tabela MON_GET_SECTION_ROUTINE e, em seguida, passar esses valores como entradas para a função de tabela MON_GET_ROUTINE. Esse método retornaria apenas as informações do bloco anônimo e, portanto, evitaria filtrar a saída com uma cláusula WHERE.