WorkStation ID ou similar em Oracle

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
mvbios
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Ter, 01 Abr 2008 2:08 pm
Localização: Rio de Janeiro - RJ
Att.
Marcus Dorbação

Olá Pessoal,
Sou iniciante em Oracle e gostaria de tirar uma dúvida ou até mesmo receber uma sugestão. Estou com o seguinte cenário:

Estou implementando auditoria de dados nos bancos das aplicações que desenvolvo em .NET, porém gostaria de no momento em que minha trigger de auditoria for registrar a inclusão/alteração/deleção recuperar qual o usuário da aplicação(e não do banco) executou a tal operação, gostaria de fazer isso de uma forma menos acoplada possível.

Nas aplicações em que utilizo o SqlServer, implementei da seguinte forma:
Existe um atributo na ConnectionString chamado Workstation ID que eu posso informar um valor qualquer, e no banco, atravéz de uma trigger ou procedure consigo recuperar o valor que foi informado no momento da conexão com o banco.
Com esta implementação não preciso em nenhum momento implementar campos nas tabelas com o codigo do usuário, ou mesmo mecher nos métodos da minha aplicação. Pois toda a conexão terá o codigo do usuário.

Gostaria de saber se existe um atributos similar no Oracle, ou até mesmo alguma sugestão de como implementar essa auditoria.

Desde já agradeço a quem puder me ajudar.
gokden
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 264
Registrado em: Dom, 19 Ago 2007 8:18 pm
Localização: Ribeirão Preto - SP
Lucas de Souza

OCA Developer
Analista de sistemas

ixi filho, no oracle tem como sim...
olha esse select

Selecionar tudo

select trim(username), -- Usuário conectado no banco
       nvl(trim(program),'PROGRAMA NÃO INDENTIFICADO'), -- Nome do programa que abriu a sessao não banco
       trim(machine), -- Nome do computador na rede
       trim(osuser), -- Nome do usuário da rede
       trim(terminal) --Nome do computador
from v$session
where audsid = userenv('sessionid')
espero ter ajudado ;)
mvbios
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Ter, 01 Abr 2008 2:08 pm
Localização: Rio de Janeiro - RJ
Att.
Marcus Dorbação

executei a query acima, e apareceu o erro abaixo.

Selecionar tudo

SQL Error: ORA-00942: a tabela ou view não existe
sabe o que pode ser?
Grato.
gokden
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 264
Registrado em: Dom, 19 Ago 2007 8:18 pm
Localização: Ribeirão Preto - SP
Lucas de Souza

OCA Developer
Analista de sistemas

ueh... você está conectando em um banco oracle ??

porque até onde eu sei todos os usuários tem privilégio de ver a v$session
agora não sei porque de estar acontecendo isso, se alguém puder ajudar....
mvbios
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Ter, 01 Abr 2008 2:08 pm
Localização: Rio de Janeiro - RJ
Att.
Marcus Dorbação

Estou sim... e o pior é que tentei ver outras views nativas do oracle e está mostrando esse mesmo erro...

Se alguém puder me ajudar...
Dulima-SP
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 193
Registrado em: Qui, 24 Jan 2008 1:56 pm
Localização: SP
Dulima

DBA Oracle Jr

Amigo da grant de DBA no usuario no qual você quer executar essa query..

aqui foi sem Problemas....
Dulima-SP
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 193
Registrado em: Qui, 24 Jan 2008 1:56 pm
Localização: SP
Dulima

DBA Oracle Jr

Amigo da grant de DBA no usuario no qual você quer executar essa query..

aqui foi sem Problemas....
Dulima-SP
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 193
Registrado em: Qui, 24 Jan 2008 1:56 pm
Localização: SP
Dulima

DBA Oracle Jr

Amigo da grant de DBA no usuario no qual você quer executar essa query..

aqui foi sem Problemas....
mvbios
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Ter, 01 Abr 2008 2:08 pm
Localização: Rio de Janeiro - RJ
Att.
Marcus Dorbação

Pessoal, consegui... atribuí alguns privilégios ao meu usuário e foi...

só uma dúvida, existe algum atributo que eu possa informar na ConnectionString de minha aplicação e recuperar via query?
Tipo um valor que eu possa informar qualquer coisa, no SQL Server eu uso o atributo Workstation ID = id_usuario_aplicacao... gostaria de fazer algo parecido no Oracle.

No aguarda e até mais...
gokden
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 264
Registrado em: Dom, 19 Ago 2007 8:18 pm
Localização: Ribeirão Preto - SP
Lucas de Souza

OCA Developer
Analista de sistemas

hmm.. bem, não intendi muito bem o que você qui dizer...
pelo qui eu intendi, você quer alguma coisa como variaveis globais não é ??

isso existe no forms, mais eu não intendo muito bem sobre isso....

mais no sqlPlus você pode recuperar o codigo de conexao do usuário conectado assim:

Selecionar tudo

 select user from dual; 
=D
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Google Adsense [Bot] e 13 visitantes