- Este tópico contém 10 respostas, 4 vozes e foi atualizado pela última vez 14 anos, 6 meses atrás por
Peterson.
-
AutorPosts
-
5 de setembro de 2011 às 11:36 pm #100674
rman
ParticipanteBoa tarde !
Seguinte, estou recebendo o seguinte erro:
ora-00980: synonym translation is no longer valid
Infelizmente não consigo identificar qual a consulta que está sendo gerada, pois é um consulta feita por um sistema terceirizado, não tenho acesso ao fonte, logo não consigo debugar a aplicação.
Como identificar a consulta ?
Pensei em gerar o trace da conexão do cliente, mas nunca fiz isso e nem sei se isso pode ajudar, alguma sugestão ? Se o trace me mostrará a consulta causadora do erro, como fazer o trace ?
6 de setembro de 2011 às 12:18 am #100675Peterson
Participanterman, esse erro passou a ocorrer após algum fato relevante?
6 de setembro de 2011 às 12:33 am #100676Peterson
Participanteexecuta a query e veja oq retorna…
SELECT * FROM dba_objects
WHERE status = 'INVALID'
AND object_type = 'SYNONYM';
talvez dê pra achar o danado com isso…
6 de setembro de 2011 às 12:46 am #100677Marcio68Almeida
ParticipanteProvavelmente a aplicação está fazendo referência a algum sinônimo que foi criado no ambiente de testes e desenvolvimento e não foi replicado para o seu ambiente…
Você pode procurar na view V$SQL, porém é muito mais sensato que você entre em contato com o fornecedor da aplicação e que ele passe a correção, pelo menos a lista de objetos para que você possa fazer a comparação dos faltantes…6 de setembro de 2011 às 4:11 am #100679rman
Participante@Peterson
O erro acontece na base de homologação, houve uma importação recente que atualizou os dados da base de produção para a de homologação. Amanhã pela manhã vou executar a consulta, mas creio que não exista nenhum invalido, talvez esteja faltando mesmo como disse o Marcio68Almeida.
@Marcio68Almeida
Não vou conseguir achar na view V$SQL, simplismente por que eu não sei qual é a query que estou procurando… 😯 . Por isso pensei em fazer o trace, o trace pode identificar a consulta ? Ou a ideia do trace não é essa ?
6 de setembro de 2011 às 5:15 am #100680Marcio68Almeida
ParticipanteA ideia do trace é identificar os caminhos que o Oracle está fazendo para executar uma determinada tarefa.
Creio que o melhor lugar seria nos logs do banco de dados.
A view V$SQL poderia ajudar mostrando quais as consultas que estão sendo executadas.
Existem outras views que podem auxiliar na identificação dos processos com erro, mas o ideal é ver com o fabricante do produto, ele certamente tem a resposta, principalmente por que você está testando uma nova versão, não é isso ???6 de setembro de 2011 às 3:13 pm #100681rman
Participante@Marcio68Almeida
Concordo com você, já tinha solicitado ao programador entrar em contato com a empresa responsável.
@Peterson
Realmente não existe nenhum SYNONYM invalido.
7 de setembro de 2011 às 1:49 am #100687ithigvo
Participante@rman você pode criar uma trigger para capturar os erros no banco e gravá-los em uma tabela log. Essa trigger é disparada sempre que um erro ocorre na instância, e você consegue obter preciosas informações sobre ele (na documentação oracle existe uma lista de ORA- que não são capturados pela trigger)
Segue um pequeno exemplo que uso para pegar esses bugs…
--Cria tabela para log dos erros
create table mag_t_erros(
data date,
usuario varchar2(30),
msg_erro varchar2(4000),
stmt_erro varchar2(4000)
);--Cria trigger
create or replace trigger mag_tr_erros
after servererror on database
declare
sql_text ora_name_list_t;
msg_erro varchar2(4000) := null;
stmt_erro varchar2(4000) := null;begin
for depth in 1 .. ora_server_error_depth loop
msg_erro := msg_erro || ora_server_error_msg(depth);
end loop;for i in 1 .. ora_sql_txt(sql_text) loop
stmt_erro := stmt_erro || sql_text(i);
end loop;insert into mag_t_erros
values
(sysdate, ora_login_user, substr(msg_erro,1,4000), substr(stmt_erro, 1, 4000));end;
7 de setembro de 2011 às 5:37 pm #100688rman
Participante@ithigvo
Obrigado pela dica, só não sei se posso implantar a trigger no servidor de produção…
8 de setembro de 2011 às 4:29 pm #100692ithigvo
Participante@rman realmente, eu aconselho a implementação apenas em homologação, e ativá-la apenas nos momentos em que precisar procurar os erros.
9 de setembro de 2011 às 9:36 pm #100714Peterson
Participanterman, esse problema foi resolvido?
-
AutorPosts
- Você deve fazer login para responder a este tópico.