Pular para o conteúdo
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #92265
    Anônimo

      Boa tarde Sr(s).

      Preciso da vossa ajuda em criar um script onde eu pudesse visualizar o que um usuário andou modificando em tabelas como ‘alter table, drop table’ pois uma parte está pronta que é a os DML onde eu consigo saber o que os user andaram a fazer ‘select, delet’ insert’.
      Agora precisava dos DDL aguém pode me ajudar.

      Obrigado

      #92267
      vieri
      Participante

        WAIT’S EM LOCK by ChiappA

        SELECT
        a.osuser || ‘:’ || a.username UserID
        , a.sid || ‘/’ || a.serial# usercode
        , b.lock_type Type, b.mode_held Hold
        , c.owner || ‘.’ || c.object_name Object
        , a.program Program
        , ROUND(d.seconds_in_wait/60,2) WaitMin
        FROM
        v$session a
        , dba_locks b
        , dba_objects c
        , v$session_wait d
        WHERE
        a.sid = b.session_id
        AND b.lock_type IN (‘DML’,’DDL’)
        AND b.lock_id1 = c.object_id
        AND b.session_id = d.sid;

        #92271
        burga
        Participante

          Ou se você quiser gerar um log das DDL’s executadas para verificação posterior você ainda pode criar uma DDL trigger.

          http://www.dba-oracle.com/t_ddl_triggers.htm

          Se precisar de mais exemplos, depois eu posto uma trigger que temos implemenada na empresa pra capturar o comando DDL e logar, porque agora eu não tenho como pegá-la.

          #92272
          Ishii
          Participante

            Olá,

            Eu uso uma trigger também alimentando numa tabela:

            table:
            MACHINE VARCHAR2(64)
            OSUSER VARCHAR2(30)
            USERNAME VARCHAR2(30)
            OBJECTNAME VARCHAR2(128)
            DATEUPDATE DATE
            COMMAND VARCHAR2(30)

            Corpo da Trigger


            create or replace trigger audit_objects
            before DDL on .SCHEMA

            declare

            -- Variaveis de Sessao

            vMachine v_$session.MACHINE%type;

            vOsUser v_$session.OSUSER%type;

            begin

            -- Capturando informacoes

            select machine, osuser
            into vMachine, vOsUser
            from v_$session

            where sid = SYS_CONTEXT ('USERENV', 'SID') ;

            insert into AUD_TAB_OBJECTS
            values

            (vMachine,vOsUser, user, ora_dict_obj_name, sysdate,ora_sysevent );

            end audit_objects;

            Troque o OWNER pelo usuário que você quer controlar…

            Com isso na tabela você terá:
            A máquina que efetuou a alteração, o usuário do SO, o Usuário do Oracle, o nome do Objeto alterado, sysdate, e o comando (alter, create, drop).
            Pode fazer as alterações que achar pertinente para esse controle.

            []s Ishii

            #92275
            Anônimo

              Obrigado pessoal eu agora com essas dicas e ex estou criando um procedimento para que seja guardado quem modificou ou deletou algo que já estava criado e vou implementar colocando o ddl do antes da modificação e quem o modificou mostrando o ddl final.
              Obrigado

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