- Este tópico contém 13 respostas, 2 vozes e foi atualizado pela última vez 14 anos, 2 meses atrás por
leandrolbs.
-
AutorPosts
-
7 de outubro de 2011 às 11:31 pm #101209
leandrolbs
ParticipantePessoal, boa tarde.
Problemas tipos de uma sexta feira..rssssSeguinte, temos uma trigger after logon.. onde nela controlamos a quantidade de usuarios logados no sistema.. com isso bloqueamos o acesso ou não;
Até ai blz.. essa trigger roda a anos… fiz algumas alterações com selects basicos… bem basicos.. fazendo umas verificações em tabelas, tudo com nvl;
Funciona!… só que sessões de ruinning JOB não funciona… essas sessões não conseguem sair do lugar quando disparado essa trigger…
Quando desabilito a trigger funfa blz…
Tenho grant em todas as tabelas do sistema, e o priv user do JOB é do proprio owner schema…
Preciso, conseguir dar um trace no JOB, ou uma trigger pra capturar erros de logon no oracle.. sei lá..rss preciso ver onde ele está errando..
8 de outubro de 2011 às 1:22 am #101211diegolenhardt
Participanteuma ideia,
pega na dba_jobs_running, lah tem o sid, compara com o sid da sessao dentro da trigger, my_stat e ve se o SID é de um job, se for pula seus testes…
😀
10 de outubro de 2011 às 4:21 pm #101218leandrolbs
ParticipanteA ideia foi boa..
select to_number(count(*)) into vEhJob from dba_jobs_running djr
where userenv('SID') = djr.SID;
if (vEhJob != 0) then
beginMas mesmo assim não funcionou;… muito estranho…
Alguem conhece um trace para JOB ?..
10 de outubro de 2011 às 6:34 pm #101221diegolenhardt
Participantese voce rodar o codigo do JOB na mão, ele funciona?
ta meio estranho brother…
10 de outubro de 2011 às 11:08 pm #101223leandrolbs
ParticipanteSeguinte, se executar o JOB com uma sessão já criada… (Ou seja não vai rolar o After Logon do banco)… 100% roda normal..
Quando o proprio Oracle vai executar este JOB, ou seja criar a sessão e executar.. não rola.. o JOB não é executado.
Melhorei o codigo:
--Declarações
begin
select to_number(count(*)) into vEhJob from dba_jobs_running jr where jr.SID = userenv('SID');if (vEhJob = 0) then
--minhas verificaçõesend trigger;
Mesmo assim nada.. não roda do mesmo jeito..
10 de outubro de 2011 às 11:13 pm #101224leandrolbs
Participanteessa função userenv será que precisa de um GRANT para user sem privilegios de DBA ?
10 de outubro de 2011 às 11:22 pm #101225diegolenhardt
Participantefaz assim:
zelect to_number(count(*)) into vEhJob from dba_jobs_running jr where jr.SID = (zelect distinct sid from v$mystat);
na trigger nao tem exception…
tenta por uma exception que insere o sqlerrm , caso ocorra em alguma tabela de log, talvez esteja caindo lá…
10 de outubro de 2011 às 11:25 pm #101226diegolenhardt
Participanteoutro teste, cria uma tabela qualquer com uma coluna, sid,
ai faz um insert nela pegando o resultado do count(*) que tu fez, pra ver se ta encontrando o jobs mesmo?
é job ou schedule?
se for schedule nao vai ter jobs_running
10 de outubro de 2011 às 11:58 pm #101227leandrolbs
Participantevia insert não insere nada.. já peguei varios blocos da trigger .. ele não insere nada…
é JOB mesmo….
Notei aqui que tem o campo FAILRES e no maximo que tenho é 16;
Será que preciso alterar este campo tambem ? pq só estou alterando a data.
Exemplo:
BEGIN
DBMS_JOB.change(270939, null, to_date('10/10/2011 16:46:55', 'dd-mm-yyyy hh24:mi:ss'),'null');
COMMIT;
END;
11 de outubro de 2011 às 4:30 pm #101233diegolenhardt
Participantevoce fica dando change?
nunca fiz isso, sempre agendei, o interval seria o responsavel por isso…
se voce desativar a trigger, ele volta a funcionar mesmo? certeza?
talvez possa pensar em usar o dbms_schedule, é uma evolução do dbms_job, muitoooooooo mais flexivel…
11 de outubro de 2011 às 5:03 pm #101234leandrolbs
Participantedisable na trigger tudo volta a funcionar;
Então, o JOB é criado na aplicação, são certa de 30 frontend… não compensa a manutenção para agendamento do Oracle…
queria mesmo era ver o erro do JOB.. Niguem manja da um trace ?..
🙁
11 de outubro de 2011 às 5:08 pm #101235diegolenhardt
Participantehttp://www.google.com.br/#sclient=psy-a … 40&bih=737
lamento nao poder ajudar mais..
poderia tentar debugar via inserts dentro da trigger em uma tabela auxiliar, talvez teria que usar um procedure com autonomous transaction, porque se esta dando erro na trigger ta perdendo sua sessao…
outra idéia ainda, comentar o codigo da trigger e ir descomentando aos poucos, quem sabe identifica o ponto exato..
=/
11 de outubro de 2011 às 5:19 pm #101237leandrolbs
Participantediegolenhardt muito obrigado pela atenção..
vo tentando outras opções + as que me passou… obrigado.
13 de outubro de 2011 às 6:12 pm #101257leandrolbs
Participantenada… não consigo com nada.. com insert if a if… com raise, com when…. já fiz tudo….. é JOB da pau… disabilito a trigger funfa..
@Galera… help!..rsssss
-
AutorPosts
- Você deve fazer login para responder a este tópico.