- Este tópico contém 18 respostas, 4 vozes e foi atualizado pela última vez 16 anos, 11 meses atrás por
airoosp.
-
AutorPosts
-
20 de janeiro de 2009 às 11:25 pm #84832
airoosp
ParticipanteBoa tarde,
Um job que executa uma procedure parou de funcionar, como não consegui identificar o problema, utilizei o comando dbms_job.remove para remover o job e o comando abaixo para criá-lo novamente.
variable job number;
begin
sys.dbms_job.submit(job => :job,
what => ‘ATUALIZACAO;’,
next_date => to_date(’20-01-2009 14:15:30′, ‘dd-mm-yyyy hh24:mi:ss’),
interval => ‘SYSDATE + 1’);
commit;
end;
/O job foi criado e a execução começou no horário programado, só que 3 horas após o início verifiquei que o mesmo continua em execução através da view DBA_JOBS_RUNNING, o processo executado na procedure é rápido, não entendi porque continua aparecendo no retorno da view, alguém tem idéia do que pode estar acontecendo? Outra coisa a view DBA_JOBS mostra diversos campos (job, log_user, priv_user, last_date, last_sec, this_date, this_sec, next_date, next_sec) os campos last_date, last_sec, next_date e next_sec não deveriam estar atualizados?
last_date 20/01/2009 14:15:30
last_sec 14:15:30
next_date 21/01/2009 14:15:30
next_sec 14:15:30Se alguém tiver alguma dica agradeço.
Obrigado.
Airton
20 de janeiro de 2009 às 11:29 pm #84833Leonardo Litz
ParticipanteOlá Airton, possívelmente voce pode estar lockado.
Estas colunas são atualizadas quando o job termina sua execução.20 de janeiro de 2009 às 11:30 pm #84834airoosp
ParticipanteEntendi, você sabe informar como posso identificar o job lockado?
20 de janeiro de 2009 às 11:41 pm #84839Leonardo Litz
ParticipanteSegue abaixo
select sid,serial# into V_SID,v_serial
from v$session
where sid =(select session_id
from dba_locks
where Blocking_others ‘Not Blocking’);lembrando que para visualizar views dba vc deve de ter permissão de dba
20 de janeiro de 2009 às 11:51 pm #84843David Siqueira
ParticipanteVocê poderia identificar também pela V$ACCESS quem esta usando esse objeto ATUALIZAÇÂO que é executado pelo JOB , e com o SID da sesão em mãos você poderia consultar as principais tabelas de LOcks e de WAits pra saber quem esta prendendo sua sessão ou até mesmo se sua sessão esta esperando por algum recurso de máquina ou até mesmo por algum delay da propria programação do objeto.
Abcs.
21 de janeiro de 2009 às 12:24 am #84845airoosp
ParticipanteAtravés da V$access consegui visualizar o owner e a procedure que foi chamada várias vezes, através do select abaixo consegui obter mais informações, pelo que entendi há uma sessão que esta em carregada desde o dia 17, será que é este o problema, bloqueou as tentativas de execução do dia 20?
select s.sid, s.status, s.server, s.LOCKWAIT, s.logon_time, w.WAIT_TIME, w.SECONDS_IN_WAIT, w.STATE
from v$session s, v$session_wait w
where s.sid = w.sid
and w.sid in (’59’,’93’,’116′,’137′)
order by s.LOGON_TIMEsid 93
status ACTIVE
server DEDICATED
logon_time 17/01/2009 14:17:42
wait_time 0
seconds_in_wait 273030
state WAITINGsid 59
status ACTIVE
server DEDICATED
logon_time 20/01/2009 05:00:58
wait_time 0
seconds_in_wait 47268
state WAITINGsid 116
status ACTIVE
server DEDICATED
logon_time 20/01/2009 11:44:59
wait_time 0
seconds_in_wait 23027
state WAITINGsid 137
status ACTIVE
server DEDICATED
logon_time 20/01/2009 14:15:29
wait_time 0
seconds_in_wait 13997
state WAITINGObrigado.
21 de janeiro de 2009 às 4:31 am #84849Rodrigo Almeida
ParticipanteAirton,
Só me confirma duas coisas.
1) Durante a execução do job e finalizar o processo, verifica se a sua sessão está com lock na tabela job$ do SYS?
2) A sua versão do 9i, é a 9.2.0.5 ou 9.2.0.6?
Abraços,
Rodrigo Almeida21 de janeiro de 2009 às 4:01 pm #84855David Siqueira
ParticipanteUtilize esse script para visualizar quais sessões estão segurando as outras sessões :
— Autor : David Ricardo
— DBA Oracle Pleno – 09/03/2007
— Descrição : Analisa as sessões em Wait e seus processos de Espera.col busername for a10 heading ‘Holding|User’
col wusername for a10 heading ‘Waiting|User’
col mode_held for a10 heading ‘Mode|Held’
col bsession_id heading ‘Holding|SID’
col wsession_id heading ‘Waiting|SID’
col mode_requested for 999999 heading ‘Mode|Requested’
col lock_id1 for 999999 heading ‘Lock|ID1’
col lock_id2 for a15 heading ‘Lock|ID2’
col type heading ‘Lock|Type’set lin 132 pages 59 feedback off echo off
ttitle ‘Relatório de Processos em Espera de Locks’
select a.inst_id,
c.holding_session bsession_id,
c.waiting_session wsession_id,
b.username busername,
a.username wusername,
c.lock_type type,
c.mode_held,
c.mode_requested,
c.lock_id1,
c.lock_id2
from gv$session b,
dba_waiters c,
gv$session a
where c.holding_session=b.sid
and c.waiting_session=a.sid
and a.inst_id=b.inst_id;clear columns
set lin 100 pages 20 feedback on
ttitle offE depois identifique o que o Rodrigo lhe orientou, porque pode ser que seja um caso de um BUG que há na release que ele mencionou. E não esqueça de verificar nas sessões os objetos que estão lockados , aqui vai um script pra verificar as sessões em lock e seus objetos e qual sql esta rodando no momento referente ao lock :
set echo off
set feedback on
set linesize 1000
col sid format 99999
col serial format 99999
col username format a20
col osuser format a10
col owner format a10
col object_name format a30
col machine format a15
col program format a35
col lockmode format a10prompt —-Sessions and objects involved in the locks
Select distinct s.sid,s.serial#,
s.username,
s.status,
s.osuser,
p.spid “OS Pid”,
o.object_name,
decode(l.locked_mode,
0, ‘None’,
1, ‘Null’,
2, ‘Row-S’,
3, ‘Row-X’,
4, ‘Share’,
5, ‘S/Row-X’,
6, ‘Exclusive’,
to_char(l.locked_mode)) “LockMode”,
s.lockwait,
s.program,
s.taddr
from dba_objects o ,
v$locked_object l,
v$session s,
v$process p,
v$sqltext t
where l.object_id=o.object_id
and l.session_id = s.sid
and s.paddr = p.addr
and t.address = s.sql_address
and t.hash_value = s.sql_hash_value
order by sid,serial#;prompt —-SQL statements sessions currently executing
Select distinct s.sid,
s.serial#,
p.spid “O.S|Id”,
t.piece,
t.sql_text
from dba_objects o ,
v$locked_object l,
v$session s,
v$process p,
v$sqltext t
where l.object_id=o.object_id
and l.session_id = s.sid
and s.paddr = p.addr
and t.address = s.sql_address
and t.hash_value = s.sql_hash_value
order by sid,serial#;Abcs.
David Ricardo.21 de janeiro de 2009 às 4:35 pm #84856airoosp
ParticipantePessoal, obrigado pelas orientação a versão do banco é 9.2.0.7 e ao fazer um select na tabela sys.job$ aparece a mensagem de erro:
ORA-00932 inconsistent datatype: expected NUMBER got LABEL
David, executei os scripts que você passou e retornaram nenhuma linha.
O mais estranho que é o job que é executado todos os dias envia mensagem via e-mail para uma usuária ao término da execução, confirmei com ela se recebeu as mensagens, ela retornou que sim.
Pelo que entendi os jobs não estão em lock mas o campo que identifica a nova data/hora de execução não esta atualizando.
21 de janeiro de 2009 às 5:08 pm #84857airoosp
ParticipanteO erro ORA-00932 que apareceu é alguma incompatibilidade de campo pois vendo a estrutura da tabela retirei do select os campos CUR_SES_LABEL, CLEARANCE_HI, CLEARANCE_LO que são do tipo MLSLABEL e a consulta retornou 8 linhas.
21 de janeiro de 2009 às 5:09 pm #84858David Siqueira
ParticipanteFaça o seguinte então, remova esse job e recrie novamente com os mesmos intervalos de tempo e monitore, isso ocorre aqui comigo também em umas bases que tenho, e o que eu faço é remover e recria-los, e fique atento se depois desse processo se a coluna ainda continua nula ou se pelo menos ele voltou a controlar a execução do job gravando o NEXT_DATE da tabela.
Abcs.
21 de janeiro de 2009 às 5:13 pm #84859airoosp
ParticipanteO job que foi iniciado no dia 17/01/2009 estava executando um select com dblink mas parece que ficou bloqueado por algum motivo, talvez seja falha na comunicação, executei um kill nesta sessão, vou verificar o que acontecerá com os jobs que foram iniciados ontem.
21 de janeiro de 2009 às 5:13 pm #84860David Siqueira
ParticipanteHa..pensei que era apenas um problema de JOB com falhas de execução ou algum tipo de erro por conta de um BUG , agora a coisa muda um pouco, nunca vi esse erro, mais vou checkar e qq novidade posto aqui pra te ajudar.
Abcs
David21 de janeiro de 2009 às 5:23 pm #84861David Siqueira
ParticipanteRepare na solução dada neste post:
http://www.techonthenet.com/oracle/errors/ora00932.php
Acredito que teras que mudar sua tabela estruturalmente, caso queira que funcione 100% seu procedimento.
Abcs.
David
21 de janeiro de 2009 às 5:46 pm #84862airoosp
ParticipanteObrigado vou verificar.
-
AutorPosts
- Você deve fazer login para responder a este tópico.