Nah, não creio que seja mistério não, muito provavelmente esse banco tem é umas lambanças das boas nele . Por exemplo : se vc pede um desc f_auditoria e ele te responde object "DBA_UNIFI"."F_AUDITORIA" , isso implica que estão sendo usados sinônimos, e vc não imagina como é fácil ter-se caquinhas tipo : existe um sinônimo PÚBLICO pro objeto X, esse sinônimo público está incorreto, e ALGUNS usuários tem um sinônimo PRIVADO correto, ambos com o mesmo nome do objeto - num caso tipo esse, quem tem o sinônimo privado correto , o banco o encontra antes do público, funciona ok, já quem não tem o privado, o banco cai no sinônimo público, logicamente não funciona, exemplo :
[EMAIL PROTECTED]:SQL>create table TAB_TT (c1 number); Tabela criada. [EMAIL PROTECTED]:SQL>create public synonym TAB_TT for chiappa.lixo; Sinônimo criado. [EMAIL PROTECTED]:SQL>grant select on TAB_TT to public; Concessão bem-sucedida. ==> ok, vamos primeiro a um usuário que tem sinônimo privado : [EMAIL PROTECTED]:SQL>@conn scott/[EMAIL PROTECTED] Conectado. [EMAIL PROTECTED]:SQL>create synonym TAB_TT for chiappa.TAB_TT; Sinônimo criado. [EMAIL PROTECTED]:SQL>@desc tab_tt Nome Nulo? Tipo ----------------------------------------- -------- ------------------ ---------- C1 NUMBER ==> ok, funcionou, vamos ter um user que só tem acesso ao sin. público, que está errado : [EMAIL PROTECTED]:SQL>@conn usr_consulta/[EMAIL PROTECTED] Conectado. [EMAIL PROTECTED]:SQL>@desc tab_tt ERROR: ORA-04043: o objeto "CHIAPPA"."LIXO" não existe ===>> é isso, confere ?? veja, eu ****** NÃO ****** estou dizendo que é esse o seu problema, só demonstro que PODEM ocorrer coisas do tipo, por incompetência/descontrole de administração dum banco Oracle, certo ?? Só vc mesma, como DBA, é que VAI debugar isso.... Da mesma forma, é ultra-documentado que quando vc acessa um objeto que não é seu em stored PL/SQL, as roles por default SÂO DESLIGADAS, são IGNORADAS, é preciso GRANT direto, será que não tem a ver com o assunto ?? Provável... Da mesma forma, a trigger : a) não dispara se houve erro no SQL b) dispara na MESMA transação, então se o cliente fizer um ROLLBACK (seja rollback automático por erro, seja de propósito),o INSERT na tabela de AUDIT *** vai *** ser desfeito.... Pra isto, AUTONOMOUS TRANSACTION é a solução. ==> Então o seu trabalho é DEBUGAR exatamente a situação, e pra isso como eu disse na msg original vc VAI ter que ver exatamente quais são os objetos envolvidos, QUAL privilégio foi dado, COMO está sendo feito o acesso à tabela de horas (se SQL ou PL/SQL).... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, "ESTUDO" <[EMAIL PROTECTED]> escreveu > > É tanto misterio que veja algo: > > 1. Conectei com o user1 (ADRIANAV) > > SQL> desc f_auditoria > ERROR: > ORA-04043: object "DBA_UNIFI"."F_AUDITORIA" does not exist > > > SQL> desc dba_unifi.F_AUDITORIA > ERROR: > ORA-04043: object dba_unifi.F_AUDITORIA does not exist > > 2.Vou ver os acessos da ADRIANAV : > > SQL> SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'ADRIANAV' > 2 / > > GRANTED_ROLE > ------------------------------ > FDIS_VDA > > SQL> select TABLE_NAME, PRIVILEGE from dba_tab_privs where GRANTEE = 'ADRIANAV' > 2 AND TABLE_NAME = 'F_AUDITORIA' > 3 / > > não há linhas selecionadas > > SQL> select TABLE_NAME, PRIVILEGE from dba_tab_privs where GRANTEE = 'FDIS_VDA' > 2 AND TABLE_NAME = 'F_AUDITORIA' > 3 / > > não há linhas selecionadas > > SQL> Select TABLE_NAME, PRIVILEGE from dba_COL_privs where GRANTEE IN ('FDIS_VDA','ADRIANAV') > 2 AND TABLE_NAME = 'F_AUDITORIA' > 3 / > não há linhas selecionadas > > > Bom ela nao tem acesso na F_AUDITORIA, mas como ela ja gravou isso HJ? > > > Select TABELA, DATA,SUBSTR(CONTEUDO_ANTIGO,8,12) antigo, hora from f_auditoria > where USUARIO = 'ADRIANAV' > and tabela = 'F_HORARIO_REAL' > and data = '09/02/2006' > > TABELA DATA ANTIGO HORA > -------------------------------------------------- -------- -------- ---- ---------- > F_HORARIO_REAL 09/02/06 VAGA=025 93036 > F_HORARIO_REAL 09/02/06 VAGA=010 93036 > F_HORARIO_REAL 09/02/06 VAGA=010 93036 > F_HORARIO_REAL 09/02/06 VAGA=012 93036 > F_HORARIO_REAL 09/02/06 VAGA=012 93036 > F_HORARIO_REAL 09/02/06 VAGA=012 93036 > F_HORARIO_REAL 09/02/06 VAGA=012 93036 > F_HORARIO_REAL 09/02/06 VAGA=014 92316 > F_HORARIO_REAL 09/02/06 VAGA=013 93041 > F_HORARIO_REAL 09/02/06 VAGA=013 93041 > > > Obrigada > > Cris > > > ----- Original Message ----- > From: jlchiappa > To: oracle_br@yahoogrupos.com.br > Sent: Thursday, February 09, 2006 9:25 AM > Subject: [oracle_br] Re: duvida de privilegios > > > Não, o usuário recebeu GRANT de DML na tab de horário, é ** APENAS ** > isso que ele vai poder fazer diretamente : já que a tabela tem um > PL/SQL "amarrado" nela, o PL/SQL vai ser executado, ** MAS ** vai ser > executado na conta do dono, o usuário final ** NÂO ** vai receber > nenhum priv extra. Exemplo : > > ==> usuário master cria tudo : > > [EMAIL PROTECTED]:SQL>create table TAB_HORA(c1 number); > > Tabela criada. > > [EMAIL PROTECTED]:SQL>create table TAB_AUDIT(username varchar2(50), > datahora date); > > Tabela criada. > > [EMAIL PROTECTED]:SQL>create trigger TRG_AUDIT after INSERT on TAB_HORA > 2 BEGIN > 3 insert into TAB_AUDIT values(user, sysdate); > 4 END; > 5 / > > Gatilho criado. > > ==> dou GRANT ** apenas ** de INSERT na tabela de hora, então é > APENAS isso que o usuário-final vai ter : > > [EMAIL PROTECTED]:SQL>grant insert on TAB_HORA to SCOTT; > > Concessão bem-sucedida. > > ==> vamos conectar como usuário-final : > > [EMAIL PROTECTED]:SQL>create synonym TAB_HORA for chiappa.TAB_HORA; > > Sinônimo criado. > > [EMAIL PROTECTED]:SQL>insert into TAB_HORA values(1); > > 1 linha criada. > > [EMAIL PROTECTED]:SQL>commit; > > Validação completa. > > ==> consegui fazer o que tenho GRANT, veja que ** NÂO ** recebi > grant "extra" nenhum por causa da trigger : > > [EMAIL PROTECTED]:SQL>select * from chiappa.TAB_AUDIT; > select * from chiappa.TAB_AUDIT > * > ERRO na linha 1: > ORA-01031: privilégios insuficientes <<==== ok ?? > > > ==> mas veja que o PL/SQL ** foi ** sim executado, mas na conta do > master : > > > [EMAIL PROTECTED]:SQL>select * from chiappa.TAB_AUDIT; > > USERNAME DATAHORA > ---------------- ------------------- > SCOTT 09/02/2006 09:32:17 > > []s > > Chiappa > --- Em oracle_br@yahoogrupos.com.br, "ESTUDO" <[EMAIL PROTECTED]> > escreveu > > > > olá Chiappa.. hum vou tentar explicar melhor.. mas acredito q vc ja > respondeu. > > Quem criou a trigger e a tabela de auditoria e de horario foi o > usuario master. > > > > O master deu acesso de insert na tabela de horario pro usuario > user1. > > > > Então isso quer dizer que o user1 tem acesso na auditoria por ela > estar na trigger da tabela de horario? > > > > ----- Original Message ----- > > From: jlchiappa > > To: oracle_br@yahoogrupos.com.br > > Sent: Thursday, February 09, 2006 8:38 AM > > Subject: [oracle_br] Re: duvida de privilegios > > > > > > Tá meio confuso aí : a QUEM pertence (ie, quem criou) a tabela de > > auditoria ?? QUEM criou o trigger ?? A regra no PL/SQL (trigger é > > PL/SQL) funciona assim : que criou e é dono do objeto SEMPRE o > consegue > > usar normalmente em qquer PL/SQL que ele mesmo vá criar. > > Já se a tabela de dados em questão e a trigger foram criada por > um > > OUTRO usuário e o usuário destino recebeu grant de DML nela, > > automaticamente o "GRANT de execução" do trigger vem junto, e a > trigger > > vai rodar sob permissão do usuário que a criou, o que implica que > terá > > acesso á tabela de auditoria normalmente. > > Se não é isso a sua situação, explica melhor aí, que a gente > tenta > > solucionar a sua dúvida. > > > > []s > > > > Chiappa > > --- Em oracle_br@yahoogrupos.com.br, "ESTUDO" <[EMAIL PROTECTED]> > escreveu > > > > > > Bom Dia > > > > > > Pessoal, estou com a seguinte duvida: > > > Tenho uma tabela de auditoria uma de horario e o usuario user1. > > > O user1 tem acesso full na tabela de horario. > > > Na tabela de horario tenho uma trigger que insere na auditoria. > > > > > > Pergunta: O user1 precisa ter acesso na auditoria pra trigger > > funcionar? > > > > > > Obrigada > > > > > > Cris > > > > > > > > > [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/ > > -------------------------------------------------------------- ---- > -------------------------------------------------------- > __________________________________________________________________ > > Moderador e Fundador: Dorian Anderson Soutto [EMAIL PROTECTED] > > > __________________________________________________________________ > > > > > > Yahoo! Grupos, um serviço oferecido por: > > PUBLICIDADE > > > > > > > > > > ---------------------------------------------------------------- ---- > ---------- > > Links do Yahoo! Grupos > > > > a.. Para visitar o site do seu grupo na web, acesse: > > http://br.groups.yahoo.com/group/oracle_br/ > > > > b.. Para sair deste grupo, envie um e-mail para: > > [EMAIL PROTECTED] > > > > c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos > do Serviço do Yahoo!. > > > > > > > > [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/ > ------------------------------------------------------------------ -------------------------------------------------------- __________________________________________________________________ > Moderador e Fundador: Dorian Anderson Soutto [EMAIL PROTECTED] > __________________________________________________________________ > > > Yahoo! Grupos, um serviço oferecido por: > PUBLICIDADE > > > > > -------------------------------------------------------------------- ---------- > Links do Yahoo! Grupos > > a.. Para visitar o site do seu grupo na web, acesse: > http://br.groups.yahoo.com/group/oracle_br/ > > b.. Para sair deste grupo, envie um e-mail para: > [EMAIL PROTECTED] > > c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!. > > > > [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/ --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ Moderador e Fundador: Dorian Anderson Soutto [EMAIL PROTECTED] __________________________________________________________________ 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