- Este tópico contém 11 respostas, 4 vozes e foi atualizado pela última vez 14 anos, 7 meses atrás por
rman.
-
AutorPosts
-
21 de julho de 2011 às 3:44 pm #100099
rman
ParticipanteBom dia !
Recebi um alerta no EM do Oracle 10g sobre objetos inválidos no schema. O alerta foi disparado ontem, hoje verifiquei os objetos e hoje não possui nenhum objeto inválido.
Como posso identificar esses objetos que temporariamente ficaram invalidos ?
21 de julho de 2011 às 4:45 pm #100100Ishii
ParticipanteOlá,
Trabalhei com um sistema que tinha cerca de 3000 procedures e umas 1500 packages além de outros, eventualmente no Oracle 9i e no 10g apareciam uns objetos inválidos que eram recompilados posteriormente. Cheguei a criar uma trigger de auditoria para tentar descobrir a razão, nos logs, aparentemente na utilização de uma package tinha o seguinte comando:
alter package compile;Nesta package não tinha nada de especial ou diferente e o pior… nem sempre era o mesmo objeto, mas pelo menos eram sempre packages…
Como havia uma dependência dessas packages com outros objetos, vários ficavam inválidos sem razão…
Em alguns casos, as packages dependentes apareciam nos logs da auditoria com esse comando de recompilação, como se estivessem voltando ao seu status de válido. Nunca consegui descobrir a razão, pedimos para abrir um chamado na Oracle, mas como o único registro era o log e como era ambiente de produção, não dava para deixar os mesmo inválidos até abrir o chamado…
Se você quiser, mande-me um DM e eu te envio a trigger de audit.
[]s Ishii
21 de julho de 2011 às 8:32 pm #100102rman
ParticipanteOpa, eu quero sim…
DM ???
21 de julho de 2011 às 9:20 pm #100103Doug
ParticipanteDM = direct message (twitter) rsrs
Mande uma msn particular para ele através do forum para ele lhe enviar o script.
Ja tentou
select count(*) from all_objects where status=’INVALID’;
abs
21 de julho de 2011 às 10:20 pm #100105rman
Participante[quote=”Doug”:1mdxjjgs]DM = direct message (twitter) rsrs
Mande uma msn particular para ele através do forum para ele lhe enviar o script.
Ja tentou
select count(*) from all_objects where status=’INVALID’;
abs[/quote]
Sim Doug, já tentei, ZERO linhas…
É muito estranho ficou invalido temporariamente… por isso não da pra saber qual foi o objeto que se quebrou…
A obrigado por esclarecer o que é DM… eu não uso twitter… tenho uma conta de twitter do meu blog mas nem sei usar… que feio né… vou mandar um MP…
22 de julho de 2011 às 3:34 pm #100116rman
ParticipanteOpa, hoje eu peguei outros objetos inválidos, são todos synonyms de tabelas…
Tenho a tabela exemplo do usuário joao
Criando o synonym para o usuario pedro
create or replace synonym exemplo
for joao.exemplo;Usando o usuário pedro
SELECT * FROM EXEMPLO;
Se o synonyms está inválido não deveria funcionar correto ?
O SELECT é resolvido perfeitamente…
Alguém tem ideia ?
Outra coisa, o que poderia ter invalidado os synonyns de tabela ? Existe um EXP que roda horario que o alert foi disparado… O EXP pode ter invalidado o objeto ?
22 de julho de 2011 às 6:05 pm #100119Ishii
ParticipanteOlá,
Se são somente os sinônimos, acho que o Metalink tinha um doc para isso. No caso de sinônimos, eles eram recompilados automaticamente na primeira utilização.
Depois do select o sinônimo ainda permanece Inválido?
[]s Ishii
22 de julho de 2011 às 6:30 pm #100120rman
ParticipanteRealmente Ishi, Após o SELECT se torna valido.
Só ainda não descobri o que causou o problema….
22 de julho de 2011 às 8:04 pm #100121Ishii
ParticipanteOlá,
Procure o Doc ID 438210.1 do Metalink…
[]s Ishii
22 de julho de 2011 às 9:15 pm #100122rman
ParticipanteAlguém com acesso ao metalink…
Por favor, poderia postar o Doc ID 438210.1 ?
27 de julho de 2011 às 2:01 am #100150Regis Araujo
ParticipanteOpa..!
Boa noite..!
Então.. os objetos ficam inválidos pois as tabelas com as quais eles são relacionados, sofrem alguma alteração, isto invalida todos os objetos que fazem referencia com esta tabela.. Mas no primeiro acesso a estes objetos o Oracle faz o compile dos mesmos..
Verifique se não existe nenhuma rotina ou alguem que faça algum ALTER TABLE, nestas tabelas…
Abraços..!
27 de julho de 2011 às 2:27 am #100152rman
Participante[quote=”Thunder_Catz”:99hdcmro]Opa..!
Boa noite..!
Então.. os objetos ficam inválidos pois as tabelas com as quais eles são relacionados, sofrem alguma alteração, isto invalida todos os objetos que fazem referencia com esta tabela.. Mas no primeiro acesso a estes objetos o Oracle faz o compile dos mesmos..
Verifique se não existe nenhuma rotina ou alguem que faça algum ALTER TABLE, nestas tabelas…
Abraços..![/quote]
Apesar de não ter achado quem causou a invalidez do synonym de tabela consegui entender o que aconteceu… Realmente o primeiro SELECT usado no synonym recompila e valida… Isso explica a invalidez temporária…
Obrigado pelas dicas…
-
AutorPosts
- Você deve fazer login para responder a este tópico.