Pular para o conteúdo

Fóruns Banco de dados Oracle Listar processos do banco. Listar processos do banco.

#97339
hcamposcru
Participante

    [quote=”rwarstat”:3qx6nodx]Hudson,

    Qual a versão do banco que tu está executando? Em qual SO?
    Poderia começar dando uma olhada no alert.log. Com certeza se houve algo com o banco lá irá ter alguma coisa para começar a investigar.

    Abraço,
    Roberto[/quote]

    Roberto,
    A versão é Oracle 10g e o SO é o RED HAT.
    O problema aconteceu quando compilar uma procedure, pois apareceu o erro ORA-00942: table or view does not exist. O erro é nas linhas onde realiza os inserts abaixo:

    INSERT INTO TB_AJUSTA_PARAMETRO VALUE ( SELECT * FROM V$PARAMETER );
    INSERT INTO TB_AJUSTA_INSTANCIA VALUE ( SELECT * FROM V$INSTANCE );
    INSERT INTO TB_AJUSTA_HIST_ACTIVE VALUE ( SELECT * FROM DBA_HIST_ACTIVE_SESS_HISTORY ); .

    Agora se eu executar qualquer um dos insert fora da procedure, irá funcionar perfeitamente.

    O que acontece é que está ocorrendo um erro esporadicamente e ninguém nos fala que erro é esse. E nós precisamos saber que erro é esse pois está causando sérios problemas no nosso sistema.

    Abaixo segue a procedure que criei:


    create or replace
    PROCEDURE SP_AJUSTA_PARAMETROS (P_RETORNO VARCHAR2) IS

    V_HOUR VARCHAR2(10);
    V_STATE VARCHAR2(10);
    V_COUNT VARCHAR2(100);

    BEGIN

    INSERT INTO TB_AJUSTA_PARAMETRO VALUE ( SELECT * FROM V$PARAMETER );
    INSERT INTO TB_AJUSTA_INSTANCIA VALUE ( SELECT * FROM V$INSTANCE );
    INSERT INTO TB_AJUSTA_HIST_ACTIVE VALUE ( SELECT * FROM DBA_HIST_ACTIVE_SESS_HISTORY );

    FOR R_HIST IN (
    SELECT TO_CHAR(TRUNC((SAMPLE_TIME), 'HH'), 'HH24:MI') AS "HOUR",
    STATE,
    COUNT(*)/360 AS "COUNT"
    FROM (
    SELECT SAMPLE_TIME,
    SAMPLE_ID,
    CASE WHEN SESSION_STATE = 'ON CPU' THEN 'CPU'
    WHEN SESSION_STATE = 'WAITING' AND WAIT_CLASS IN('User I/O') THEN 'IO'
    WHEN SESSION_STATE = 'WAITING' AND WAIT_CLASS IN('Cluster') THEN 'CLUSTER'
    ELSE 'WAIT'
    END STATE
    FROM TB_AJUSTA_HIST_ACTIVE
    WHERE SESSION_TYPE IN('FOREGROUND')
    AND SAMPLE_TIME BETWEEN TRUNC(SYSDATE, 'HH') -25/24
    AND TRUNC(SYSDATE, 'HH') -1/24
    )
    GROUP BY TRUNC((SAMPLE_TIME), 'HH'), STATE
    ORDER BY TRUNC((SAMPLE_TIME), 'HH')
    )
    LOOP

    V_HOUR          := R_HIST."HOUR"; 
    V_STATE         := R_HIST.STATE; 
    V_COUNT         := R_HIST."COUNT"; 
    

    END LOOP;

    COMMIT;

    EXCEPTION
    WHEN OTHERS THEN

    NULL; 
    

    END;