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
  

Mensagemem Ter, 01 Abr 2008 2:21 pm

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.
mvbios
Localização: Rio de Janeiro - RJ

Att.
Marcus Dorbação

Mensagemem Ter, 01 Abr 2008 3:27 pm

ixi filho, no oracle tem como sim...
olha esse select
Código: Selecionar todos
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 ;)
gokden
Localização: Ribeirão Preto - SP

Lucas de Souza

OCA Developer
Analista de sistemas

Mensagemem Ter, 01 Abr 2008 3:51 pm

executei a query acima, e apareceu o erro abaixo.
SQL Error: ORA-00942: a tabela ou view não existe

sabe o que pode ser?
Grato.
mvbios
Localização: Rio de Janeiro - RJ

Att.
Marcus Dorbação

Mensagemem Ter, 01 Abr 2008 4:18 pm

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....
gokden
Localização: Ribeirão Preto - SP

Lucas de Souza

OCA Developer
Analista de sistemas

Mensagemem Ter, 01 Abr 2008 4:22 pm

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...
mvbios
Localização: Rio de Janeiro - RJ

Att.
Marcus Dorbação

Mensagemem Ter, 01 Abr 2008 4:40 pm

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

aqui foi sem Problemas....
Dulima-SP
Localização: SP

Dulima

DBA Oracle Jr

Mensagemem Ter, 01 Abr 2008 4:41 pm

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

aqui foi sem Problemas....
Dulima-SP
Localização: SP

Dulima

DBA Oracle Jr

Mensagemem Ter, 01 Abr 2008 4:41 pm

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

aqui foi sem Problemas....
Dulima-SP
Localização: SP

Dulima

DBA Oracle Jr

Mensagemem Qua, 02 Abr 2008 1:06 pm

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...
mvbios
Localização: Rio de Janeiro - RJ

Att.
Marcus Dorbação

Mensagemem Qua, 02 Abr 2008 2:48 pm

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:
Código: Selecionar todos
select user from dual;


=D
gokden
Localização: Ribeirão Preto - SP

Lucas de Souza

OCA Developer
Analista de sistemas



Voltar para SQL

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes

cron