Enriquecendo a resposta do querido amigo Chiappa, vc também terá que analisar se a dependencia é direta ou indireta. Exemplo : Vc cria a procedure A que acessa a tabela XX. Vc cria a procedure B que chama a procedure A no 1/2 de seu código.
Caso vc altere a estrutura da tabela XX, os 2 procedimentos ficarão inválidos. Nesse caso, quando vc executar a procedure A que faz acesso direto à tabela e não houver erro de compilação, blz... o SGBD irá recompilar para ti. Porém a procedure B ficará inválida, justamente por que vc não tem uma dependencia direta a tabela XX. E como o chiappa disse, vc terá mesmo que rastear e fazer testes.... para alcançar o resultado. Como dica, monte uma matriz de testes e replique as pessoas envolvidas os resultados obtidos. [ ]'s Salvio Padlipskas -----Mensagem original----- De: jlchiappa [mailto:[EMAIL PROTECTED] Enviada em: quinta-feira, 17 de novembro de 2005 11:35 Para: oracle_br@yahoogrupos.com.br Assunto: Re: RES: RES: [oracle_br] Objetos Descompilados Friend, com certeza é verdade que o default é recompilar quando o objeto é executado : se isso não está acontecendo, é alguma particularidade no seu ambiente, por exemplo : dependências remotas (via dblink ou transação distribuída), OU jobs disparando e efetuando algum DDL ou similar que invalide, OU sinônimos envolvidos (o sinônimo não tem um status, está sempre válido, então se o alvo do sinônimo está indisponível, pro banco está tudo OK, mas na hora de executar não encontra o objeto), ou N+1 outras possibilidades... ==> O que vc TEM que fazer, já que NÂO È algo geral e genérico, é na próxima vez que ocorrer consultar o cara que não ficou válido após a execução e olhar a DBA_DEPENDENCIES tanto pra ver do que ele depende quanto pra ver QUEM depende dele, isso vai te dar mais pistas... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, "Everton Dias" <[EMAIL PROTECTED]> escreveu > Observem esta situação: > > /* Criei uma tabela Dummy */ > CREATE TABLE teste (nome VARCHAR2(30), idade NUMBER); > > /* Criei uma procedure que utiliza esta tabela. */ > CREATE PROCEDURE teste_esd > IS > vnome VARCHAR2 (30); > vidade NUMBER; > BEGIN > SELECT nome > , idade > INTO vnome > , vidade > FROM teste; > END; > / > > /* Neste Momento a procedure esta VALID */ > SELECT status > FROM user_objects > WHERE object_name = 'TESTE_ESD'; > > /* Faco uma alteracao na tabela a fim de invalidar a procedure */ > ALTER TABLE teste DROP COLUMN nome; > > /* Neste Momento a procedure esta INVALID */ > SELECT status > FROM user_objects > WHERE object_name = 'TESTE_ESD'; > > /* Volto a alteração na Tabela */ > alter table teste add (nome varchar2(30)) > > /* Neste Momento a procedure Continua INVALID */ > SELECT status > FROM user_objects > WHERE object_name = 'TESTE_ESD'; > > /* executo a procedure para ver se ela vai compilar sozinha */ > exec teste_ESD; > > /* Neste Momento a procedure volta para VALID */ > select Status from user_objects > where object_name = 'TESTE_ESD'; > > Ou seja, na hora de execução ele compila mesmo! ... então fica no ar a > dúvida, pq algumas vezes é necessário dar um alter compile sem que se > precise alterar nenhuma linha de código ? Algumas vezes eu tenho que > recompilar sem alterar nada, mas seguindo a lógica do teste que realizei > isso não teria muito sentido. Alguém tem idéia do porquê isso ocorre ? O > pessoal do desenvolvimento esta me cobrando isso como se fosse algo de > errado com a configuração do DB. > > Quem puder ajudar eu agradeço. > > > >From: "Ivan Ricardo Schuster" <[EMAIL PROTECTED]> > >Reply-To: oracle_br@yahoogrupos.com.br > >To: <oracle_br@yahoogrupos.com.br> > >Subject: RES: RES: [oracle_br] Objetos Descompilados > >Date: Wed, 16 Nov 2005 14:20:40 -0200 > > > >Acredito que isto sempre acontece com operações iguais. > > > >Parecem semelhantes, mas um "alter table partition drop" SEMPRE invalida > >objetos, enquanto que um alter table partition add" nunca invalida. > > > >Se voce for pensar, com um ADD, você esta adicionando uma partição, tudo o > >que estava lá, continua. Já com um DROP, voce pode retirar alguma partição > >que a procedure utiliza... > > > >É interessante fazer testes com operações bastante usuais e ver o que > >acontece com cada uma... > > > >Não conheço nenhum documento que explique cada situação, se alguém souber, > >seria interessante postar. > > > >-----Mensagem original----- > >De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em > >nome de Everton Dias > >Enviada em: quarta-feira, 16 de novembro de 2005 14:00 > >Para: oracle_br@yahoogrupos.com.br > >Assunto: RE: RES: [oracle_br] Objetos Descompilados > > > > > >Pois é, o estranho é que as vezes alteramos objetos relacionados e não é > >necessário recompilar as packages/procedures. Na realidade precisaria saber > >pq algumas vezes não é necessário recompilar explicitamente e outras vezes > >isso se torna necessário ? > > > > > > >From: "Ivan Ricardo Schuster" <[EMAIL PROTECTED]> > > >Reply-To: oracle_br@yahoogrupos.com.br > > >To: <oracle_br@yahoogrupos.com.br> > > >Subject: RES: [oracle_br] Objetos Descompilados > > >Date: Wed, 16 Nov 2005 10:45:00 -0200 > > > > > >Everton, > > > > > >Estava com problema semelhante aqui. No meu caso, tinha um job que > >apagava > > >diariamente partições com mais de três meses. Com isso, todos objetos que > > >usavam estas tabelas particionadas tornavam-se inválidos. > > > > > >Dica: > > > > > >- verifique todos os objetos (tabelas, procedures, views, packages, etc) > > >que > > >são utilizados na procedure que está ficando inválida. > > >- consulte estes objetos na user_objects, verifique os que tem a coluna > > >last_ddl_time mais recente. Provavelmente o culpado estará nesta lista. > > >- verifique o que/quem alterou o ddl deste objeto e, se for um job, tente > > >arruma-lo de forma a recompilar novamente após a alteração. Se for algum > > >usuário, peça que o mesmo verifique o estado destes objetos ao alterar a > > >ddl > > >novamente. > > > > > >Sobre compilar sozinho, não sei se exite isto, se existir, também > >gostaria > > >de saber... :) > > > > > >Uma sugestão é rodar um serviço que faça esta verificação e recompile os > > >objetos de tempos em tempos. > > > > > >Boa sorte > > > > > >-----Mensagem original----- > > >De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em > > >nome de Everton Dias > > >Enviada em: quarta-feira, 16 de novembro de 2005 10:07 > > >Para: oracle_br@yahoogrupos.com.br > > >Assunto: [oracle_br] Objetos Descompilados > > > > > >Pessoal, alguém sabe me responder porque alguns objetos ficam inválidos e > > >quando são executados não conseguem passar para o status de válido > > >(compilação no momento da execução), sendo que não possuem erros e > > >funcionam > > > > > >logo após se executar um "alter xxx compile" explicitamente, sem que se > > >altere nenhuma linha de código. Se o objeto não contém erros pq o oracle > > >não > > > > > >consegue compilar sozinho estes objetos no momento da execução ? > > > > > >_________________________________________________________________ > > >MSN Busca: fácil, rápido, direto ao ponto. http://search.msn.com.br > > > > > > > > > > > >----------------------------------------------------------------- ---------- > >- > > >---------------------------------------------- > > >Atenção! As mensagens deste grupo são de acesso público e de inteira > > >responsabilidade de seus remetentes. > > >Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > > >----------------------------------------------------------------- ---------- > >- > > >---------------------------------------------- _____________________________ > >_ > > >_______________________________________ > > >Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 > > >Links do Yahoo! Grupos > > > > > > > > > > > > > > > > > > > > > > > > > > > >_________________________________________________________________ > >MSN Busca: fácil, rápido, direto ao ponto. http://search.msn.com.br > > > > > > > >------------------------------------------------------------------- --------- > >---------------------------------------------- > >Atenção! As mensagens deste grupo são de acesso público e de inteira > >responsabilidade de seus remetentes. > >Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > >------------------------------------------------------------------- --------- > >---------------------------------------------- ______________________________ > >_______________________________________ > >Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 > >Links do Yahoo! Grupos > > > > > > > > > > > > > > > > > > _________________________________________________________________ > MSN Busca: fácil, rápido, direto ao ponto. http://search.msn.com.br ---------------------------------------------------------------------------- ---------------------------------------------- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ ---------------------------------------------------------------------------- ----------------------------------------------______________________________ _______________________________________ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] -------------------------------------------------------------------------------------------------------------------------- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --------------------------------------------------------------------------------------------------------------------------_____________________________________________________________________ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html