Pular para o conteúdo
  • Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 6 anos, 4 meses atrás por Avatar photoJosé Laurindo Chiappa.
Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #109291
    Avatar de Lucas de CastroLucas de Castro
    Participante

      Prezados,

      Sou novo no mundo oracle, e estou com uma duvida referente a buscar de uma determinada informação:
      Preciso saber quais procedimentos ocorreram em ate 48hrs.
      Exemplo: Atendimento 1 data 05/03/2018 19:31 aviso 1
      Atendimento 1 data 07/03/2018 10:19 aviso 2
      os campos estão em uma mesma tabela.
      Qualquer ajuda é bem vinda.
      Obrigado.

      #109292
      Avatar photoJosé Laurindo Chiappa
      Moderador

        Blz ? Então, não só no RDBMS Oracle mas em quase qualquer SGBD absolutamente ** não é default ** vc obter um Histórico preciso e exato de alterações de dados, ok ?? Isso porque podem haver situações em que esse tipo de manutenção de Histórico preciso (que é tecnicamente chamado de Auditoria) Pode trazer implicações não sõ de performance mas de espaço em disco….
        No caso do Oracle especificamente, as opções de Auditoria que vc DEVERIA ter ativadas antes pra poder obter essa resposta de maneira certa e efetiva são : comando AUDIT, Fine-Grainded Audit (FGA) ou triggers de DML, veja a documentação Oracle e https://www.symantec.com/connect/articles/introduction-simple-oracle-auditing , https://blog.yannickjaquier.com/oracle/fine-grained-auditing-fga-hands-on.html e https://asktom.oracle.com/pls/apex/asktom.search?tag=generic-trigger-for-auditing-column-level-changes para alguns exemplos de uso…

        ===>>> CASO vc não tenha nada disso Ativo no seu banco Oracle, considere a possibilidade de no futuro ativar algo nesse sentindo…

        Para responder á sua necessidade neste momento se vc não tiver audit ativa de momento, as opções que sobram são :

        a) consultar o LOG de alterações : todo RDBMS (e aí se inclui o RDBMS Oracle) gera um log das suas transações, registrando o que foi alterado/inserido/deletado e quando – SE vc dispõe desse log completinho nas últimas 48 horas, vc o pode usar pra obter a info que vc precisa… No caso do RDBMS Oracle, o default é vc Não Manter esses logs por muito tempo E confogurar o banco de modo que quando um dos arquivos e log enche, os logs antigos comecem a ser sobrescritos, ficando perdidos : cheque com o DBA como está configurado o database em questão…
        O procedimento necessário para vc ‘garimpar’, ie, extrair a informação a partir dos logs do banco é chamada de LOGMINER : consulte a documentação Oracle e veja http://www.idevelopment.info/data/Oracle/DBA_tips/LogMiner/LOGMINER_15.shtml para um exemplo

        ou

        b) consultar como os dados estavam antes : no RDBMS Oracle é possível (SE os dados necessários ainda estão disponíveis) vc fazer uma consulta que mostre como os dados estavam no passado – assim, em tese vc pode consultar a tal tabela como estava uma hora atrás, duas horas atrás, etc, até chegar o ponto em que foi feito o INSERT que te interessa… NÃO É algo muito prático mas é Possível, veja a documentação Oracle para FLASHBACK QUERY e http://www.oracle.com/technetwork/pt/articles/sql/flashback-query-2206449-ptb.html para um exemplo

        ou

        c) não é algo EXATO, mas vc pode consultar as views de cache de SQL (como V$SQL e quetais) OU então (se vc tiver direito de uso/acesso à elas) as views de Histórico de performance do banco (como DBA_HIST_SQLxx) e ver se localiza os comandos de INSERT que introduziram os dados e/ou os comandos UPDATE que os alteraram : eu digo que isso Não É 100% exato PORQUE essas views registram os PRINCIPAIS SQLs apenas, não são todos, mas Talvez, com Sorte, vc possa achar os comandos que deseja

        []s

        Chiappa

        #109293
        Avatar de Lucas de CastroLucas de Castro
        Participante

          Opa, na verdade preciso realizar um indicador com estas informações.

          #109294
          Avatar photoJosé Laurindo Chiappa
          Moderador

            Certo, mas antes de qualquer coisa vc TEM que obter os dados, para só então poder criar um relatório, dashboard, indicador ou seja o que for com eles, sim sim ?? E Tal como eu disse, no RDBMS Oracle (tal como em muitos outros SGBDs) isso Não Necessariamente está Sempre Obrigatoriamente disponível, correto ??

            Sendo assim, primeiro de tudo vc TEM que conversar com o DBA desse banco e checar com ele Quais das opções que indiquei está Presente e Setada/existente no Seu banco : se NENHUMA delas estiver presente/ativada nesse banco E a aplicação em si não gera nenhum tipo de log/histórico, vc simplesmente Não Vai ter Como obter esse histórico, sacou ??

            []s

            Chiappa

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