- Este tópico contém 4 respostas, 4 vozes e foi atualizado pela última vez 16 anos, 2 meses atrás por
Anônimo.
-
AutorPosts
-
22 de janeiro de 2010 às 9:11 pm #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
22 de janeiro de 2010 às 9:36 pm #92267vieri
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;23 de janeiro de 2010 às 5:29 pm #92271burga
ParticipanteOu 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.
23 de janeiro de 2010 às 5:41 pm #92272Ishii
ParticipanteOlá,
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 .SCHEMAdeclare
-- Variaveis de Sessao
vMachine v_$session.MACHINE%type;
vOsUser v_$session.OSUSER%type;
begin
-- Capturando informacoes
select machine, osuser
into vMachine, vOsUser
from v_$sessionwhere 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
25 de janeiro de 2010 às 5:01 pm #92275Anô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 -
AutorPosts
- Você deve fazer login para responder a este tópico.