- Este tópico contém 9 respostas, 5 vozes e foi atualizado pela última vez 14 anos, 4 meses atrás por
jspaulonci.
-
AutorPosts
-
26 de outubro de 2011 às 10:11 pm #101408
Peterson
ParticipanteAmigos, uma aplicação está apresentando erro ORA-00942 table or view does not exist.
É possível descobrir no banco qual a tabela que a aplicação tenta acessar?
26 de outubro de 2011 às 10:55 pm #101413leandrolbs
Participanteno trace não aparece? creio que seja possivel veriricar…
26 de outubro de 2011 às 10:59 pm #101414felipeg
ParticipantePeterson.
Pega a sessão antes de executar o erro e gera um trace.
Executa e o erro e procura no trc pelo código do erro que o comando aparece.Atenciosamente,
Felipe.27 de outubro de 2011 às 3:46 pm #101423Peterson
ParticipanteFelipe, ativei a auditoria com a cláusula not exists para o usuário e achei a dita cuja…
Acho q foi mais ou menos isso q vc sugeriu correto?
Valeu pela ajuda! Salvou!
😀
27 de outubro de 2011 às 4:00 pm #101426felipeg
ParticipanteOpa Peterson,
Interessante essa sua solução mas eu sugeri um pouquinho diferente.
Era pra gerar um trace da sessão que iria dar o erro e depois usar o tkprof pra abrir.Dentro do log iria aparecer algo assim
TKPROF: Release 10.2.0.3.0 - Production on Thu Oct 27 11:00:04 2011Copyright (c) 1982, 2005, Oracle. All rights reserved.
Trace file: orcl10_ora_4380.trc
Sort options: default
count = number of times OCI procedure was executed
cpu = cpu time in seconds executing
elapsed = elapsed time in seconds executing
disk = number of physical reads of buffers from disk
query = number of buffers gotten for consistent read
current = number of buffers gotten in current mode (usually for update)
rows = number of rows processed by the fetch or execute call
The following statement encountered a error during parse:
SELECT SYSDATE FROM bla
Error encountered: ORA-00942
SELECT *
FROM
dualcall count cpu elapsed disk query current rows
Parse 1 0.03 0.02 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 1 0.00 0.00 0 3 0 1
total 3 0.03 0.02 0 3 0 1
Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 711Rows Row Source Operation
1 TABLE ACCESS FULL DUAL (cr=3 pr=0 pw=0 time=254 us)Ai era só procurar pelo ORA-00942 e ver o comando logo acima.
Bom de qualquer forma funcionou 8)Atenciosamente,
Felipe.27 de outubro de 2011 às 4:15 pm #101427leandrolbs
Participanteuma forma tbm, é criar um trigger AFTER SERVERERROR ON DATABASE e olhar na session o sql executado….
27 de outubro de 2011 às 5:08 pm #101430Peterson
ParticipanteAmigos, testei as duas sugestões e também são válidas! Obrigado pela ajuda e por complementar o tópico com mais opções mesmo depois de Resolvido!
Abraços a todos!
31 de outubro de 2011 às 10:51 pm #101452vieri
Participante===========================
Auditar errors na instância
create table
log (
dt date,
usr varchar2(30),
stmt varchar2(4000)
);Table created.
create or replace trigger catch_error
after servererror on database
declare
l_text ora_name_list_t;
l_n number;
l_stmt varchar2(4000);
begin
l_n := ora_sql_txt( l_text );
for i in 1 .. nvl(l_text.count,0)
loop
l_stmt := l_text(i);
end loop;
l_stmt := l_stmt || ‘=> ‘;
for i in 1 .. ora_server_error_depth
loop
l_stmt := l_stmt || ora_server_error_msg(i);
end loop;
insert into log values ( sysdate, user, l_stmt );
end;
/use com prudência!
31 de outubro de 2011 às 10:55 pm #101453Peterson
Participanteexcelente Vieri! Obrigado!
1 de novembro de 2011 às 1:55 pm #101454jspaulonci
ParticipanteEu ia sugerir a trigger de after error mas acredito que a solução do audit foi a mais barata (menos overhead)
Essas triggers de sistema são pessadas, mesmo filtrando -
AutorPosts
- Você deve fazer login para responder a este tópico.