terça-feira, 10 de maio de 2011

SQL sobre o Repositório do PowerCenter - Identificar Quantidade de Sessions em Paralelo

Pessoal,

Criei um SQL para identificar a quantidade de sessions em paralelo durante um determinado período do dia no servidor PowerCenter. Este SQL foi testado na versão 8.6.1.
A quantidade de sessions é calculada no intervalo de 60 segundos, começando a meia noite e realizando 1000 interações (CONNECT BY LEVEL <=1000) .

SELECT RESULTADO_AUX.TEMPO, NVL(RESULTADO.QTD,0) AS QTD
FROM
(
  SELECT TABELA_TEMPO_AUX.TEMPO, COUNT(1) AS QTD
 FROM
     (SELECT TO_DATE('15-04-2011','DD-MM-YYYY')+(LEVEL/86400)*60 TEMPO FROM DUAL CONNECT BY LEVEL <=1000) TABELA_TEMPO_AUX,
     (SELECT  S.INSTANCE_NAME AS NOME_SESSION, S.START_TIME AS INICIO, S.END_TIME AS FIM
      FROM REP_TASK_INST_RUN S
      WHERE to_char(start_time, 'DD/MM/YYYY') = '15/04/2011'
        AND S.TASK_TYPE = 68 -- apenas session
        AND S.RUN_ERR_CODE = 0 ) TABELA_SESSIONS  
 WHERE TABELA_TEMPO_AUX.TEMPO BETWEEN TABELA_SESSIONS.INICIO AND TABELA_SESSIONS.FIM
 GROUP BY TABELA_TEMPO_AUX.TEMPO) RESULTADO, 
 (SELECT TO_DATE('15-04-2011','DD-MM-YYYY')+(LEVEL/86400)*60 TEMPO FROM DUAL CONNECT BY LEVEL <=1000) RESULTADO_AUX
WHERE RESULTADO_AUX.TEMPO =  RESULTADO.TEMPO (+) 
ORDER BY RESULTADO_AUX.TEMPO 


O resultado deste SQL pode ser exibido através de um gráfico no Excel de forma a facilitar o entendimento dos pontos de pico no Servidor.