- Este tópico contém 5 respostas, 3 vozes e foi atualizado pela última vez 12 anos, 11 meses atrás por fabiogalera.
-
AutorPosts
-
16 de dezembro de 2011 às 7:47 pm #102223Thiago VilhenaParticipante
Não estou conseguindo postar a procedure..
vou postar só o miolo de onde eu acho que deve estar o problema
dbms_output.put_line('TS_INI '||TS_INI);
dbms_output.put_line('TS_FIM '||TS_FIM);
dbms_output.put_line('TOTAL_HOUR_TPO_CPU '||TOTAL_HOUR_TPO_CPU);
dbms_output.put_line('HOUR_CONS_MSU '||HOUR_CONS_MSU);
dbms_output.put_line('HOUR_CONS_MIPS '||HOUR_CONS_MIPS);
dbms_output.put_line('STEP 1');
execute immediate
'update DADO_SMF_DET subpartition('||S||')
set
DSD_CONS_MSU = DSD_CONS_MSU + :HOUR_CONS_MSU*ELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM-:TS_INI)/ELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM - DSD_DT_HR_INI)*(DSD_TPO_CPU_TCB+DSD_TPO_CPU_SRB)/:TOTAL_HOUR_TPO_CPU,
DSD_CONS_MIPS = DSD_CONS_MIPS + :HOUR_CONS_MIPS*ELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM-:TS_INI)/ELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM - DSD_DT_HR_INI)*(DSD_TPO_CPU_TCB+DSD_TPO_CPU_SRB)/:TOTAL_HOUR_TPO_CPU
where
DSD_DT_HR_INI < :TS_INI and DSD_DT_HR_FIM > :TS_INI'
using
HOUR_CONS_MSU, TS_INI, TOTAL_HOUR_TPO_CPU, HOUR_CONS_MIPS, TS_INI, TOTAL_HOUR_TPO_CPU, TS_INI, TS_INI;dbms_output.put_line('DETALHE '||S||': 1 - QTDE UPDATES '||SQL%ROWCOUNT);
commit;
16 de dezembro de 2011 às 8:37 pm #102225Thiago VilhenaParticipanteAqui pessoal..
isso é um update q transformei em um selet!!
Agora ta dando o seguinte erro:
select
DSD_CONS_MSU + :HOUR_CONS_MSUELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM-:TS_INI)/decode((ELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM - DSD_DT_HR_INI), 0, 1,(ELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM - DSD_DT_HR_INI))))(DSD_TPO_CPU_TCB+DSD_TPO_CPU_SRB)/:TOTAL_HOUR_TPO_CPU
-- DSD_CONS_MIPS + :HOUR_CONS_MIPSELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM-:TS_INI)/decode((ELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM - DSD_DT_HR_INI), 0, 1,(ELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM - DSD_DT_HR_INI)))(DSD_TPO_CPU_TCB+DSD_TPO_CPU_SRB)/:TOTAL_HOUR_TPO_CPU
from DADO_SMF_DET subpartition(RJ_SET_2011)
where
DSD_DT_HR_INI :TS_FIM
ERRO
select
DSD_CONS_MSU + :HOUR_CONS_MSUELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM-:TS_INI)/decode((ELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM - DSD_DT_HR_INI), 0, 1,(ELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM - DSD_DT_HR_INI))))(DSD_TPO_CPU_TCB+DSD_TPO_CPU_SRB)/:TOTAL_HOUR_TPO_CPU
-- DSD_CONS_MIPS + :HOUR_CONS_MIPSELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM-:TS_INI)/decode((ELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM - DSD_DT_HR_INI), 0, 1,(ELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM - DSD_DT_HR_INI)))(DSD_TPO_CPU_TCB+DSD_TPO_CPU_SRB)/:TOTAL_HOUR_TPO_CPU
from DADO_SMF_DET subpartition(RJ_SET_2011)
where
DSD_DT_HR_INI :TS_FIM
*
Error at line 2
ORA-00907: parêntese direito não encontradoScript Terminated on line 1.
16 de dezembro de 2011 às 8:42 pm #102226Thiago VilhenaParticipante
update DADO_SMF_DET subpartition(RJ_SET_2011)
set
DSD_CONS_MSU = DSD_CONS_MSU + :HOUR_CONS_MSUELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM-:TS_INI)/decode((ELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM - DSD_DT_HR_INI), 0, 1,(ELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM - DSD_DT_HR_INI))))(DSD_TPO_CPU_TCB+DSD_TPO_CPU_SRB)/:TOTAL_HOUR_TPO_CPU,
--DSD_CONS_MIPS = DSD_CONS_MIPS + :HOUR_CONS_MIPSELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM-:TS_INI)/decode((ELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM - DSD_DT_HR_INI), 0, 1, ELAPSED_TIME_CENT_SEG(DSD_DT_HR_FIM - DSD_DT_HR_INI))(DSD_TPO_CPU_TCB+DSD_TPO_CPU_SRB)/:TOTAL_HOUR_TPO_CPU
where
DSD_DT_HR_INI :TS_INI
16 de dezembro de 2011 às 9:42 pm #102229Regis AraujoParticipanteFala Thiago..
Vc ja verificou se existe algum lock no seu banco?
Qual a versão do banco?Abraços..!
16 de dezembro de 2011 às 10:30 pm #102234Thiago VilhenaParticipante[quote=”Thunder_Catz”:1mz9oql3]Fala Thiago..
Vc ja verificou se existe algum lock no seu banco?
Qual a versão do banco?Abraços..![/quote]
Sim. não tem lock eh 11R2.. po ela demorou mas fez!!, demorou bastante vi que a subpartition eh meio grande.. to pensando em tentar envenenar os updates pra ve se vai mais rapido!
VLW
16 de dezembro de 2011 às 10:36 pm #102236fabiogaleraParticipanteThiago,
Procure usar o BULK COLLECT no PL/SQL, assim você pode fazer com que envie mensagens durante o processo, podendo ainda efetuar commits para evitar que perca o processo e tenha que fazer rollback de tudo.
-
AutorPosts
- Você deve fazer login para responder a este tópico.