Pular para o conteúdo
Visualizando 7 posts - 1 até 7 (de 7 do total)
  • Autor
    Posts
  • #100863
    leo_jf
    Participante

      Bom dia Senhores, blz?

      Tenho uma aplicação em VB6. Há uma trigger de auditoria que gostaria de incluir o usuario e ip toda vez que o usuario logasse no sistema. Ha como eu buscar o usuario da sessao e ip?
      Tentei usar a package (owa_util.get_cgi_env(‘REMOTE_ADDR’), mas não funcionou.
      obrigado.

      #100868
      rman
      Participante

        Verifica se isso ajuda:


        SELECT 'HOSTNAME: '||SYS_CONTEXT('USERENV', 'TERMINAL')
        ||' IP: '||SYS_CONTEXT('USERENV', 'IP_ADDRESS')
        ||' USUARIO_SO: '||SYS_CONTEXT('USERENV', 'OS_USER')
        FROM DUAL;

        #100872
        leo_jf
        Participante

          Fala rman,

          Funcionou perfeito. muitíssimo obrigado.

          Só uma duvida:

          Eu peguei o usuário da sessão oracle. Tem como pegar da sessão do VB?

          Se não tiver não teria problemas, pois teoricamente o usuário logado na máquina que irá usar o sistema.

          abraços

          #100885
          rman
          Participante

            @leo_jf

            Você precisa de saber qual é o usuário do sistema, e o sistema usa apenas 1 conexão com o banco correto ? Ou seja, pro Oracle existe apenas 1 usuário. É isso ?

            #100886
            leo_jf
            Participante

              Oi rman,

              Seria isso mesmo.
              Exemplo: Quando acessei o sistema loguei com meu usuário 228000, mas foi logado na tabela de auditoria minha matricula 2180000. O motivo é que o sistema não tenho acesso, então uso matricula de outra pessoa. Gostaria que a tabela mostrasse o login que acessou o sistema 228000

              #100895
              rman
              Participante

                É possível identificar o usuário do sistema, mas é necessário criar uma package ou tabela temporária para armazenar o nome do usuário do sistema.

                Vou explicar a lógica:

                Utilizando package. Crie uma package e adicione um atributo usuário, implemente uma procedure no package body chamada setUsuario, essa procedure será utilizada toda vez que o usuário logar no sistema. Implemente um getUsuario que simplesmente lê o atributo usuário da package.

                Utilizando tabela temporária: Crie uma tabela temporária com uma coluna usuário, ao entrar no sistema faça um insert na tabela, quando quiser saber quem é faça um select na tabela, configure a tabela temporária para limpar ao desconectar a sessão. O insert e select podem ser encapsulado em procedure e function.

                Pretendo escrever um artigo no meu blog sobre isso futuramente.

                #100955
                leo_jf
                Participante

                  Boa Tarde Rman,

                  Já tinha pensando em uma solução parecida com a que você me indicou, mas a analista não quis mudar o código fonte do sistema.
                  De qq forma ficou a opção do usuário SO que funcionou perfeitamente.

                  obrigado por ter me ajudado.

                  Forte abraço.

                Visualizando 7 posts - 1 até 7 (de 7 do total)
                • Você deve fazer login para responder a este tópico.