-- 闲来无事,给你写了一个例子,使用触发器做记录的。
SQL> create table audit_table
2 (
3 dropdate date default sysdate ,
4 object_name varchar2(30)
5 );表已创建。SQL>
SQL> CREATE OR REPLACE TRIGGER trg_drop_table
2 BEFORE DROP ON DATABASE
3 BEGIN
4 insert into audit_table(object_name) values(ora_dict_obj_name ());
5
6 END;
7 /触发器已创建SQL> create table x(id int , name varchar(20)) ;表已创建。SQL> drop table x ;表已删除。SQL> select * from audit_table ;DROPDATE OBJECT_NAME
-------------- ------------------------------
29-12月-14 XSQL>
2 from audit_table ;DROPDATE OBJECT_NAME
------------------- ------------------------------
2014-12-29 16:26:09 XSQL>
忘了说了 我们是非归档模式,闪不回去按我说的那个建立一个触发器吧 2#,看看什么时候给干掉的。 sys_context('userenv','ip_address') , 可以把客户机的IP地址也取出来。
BEFORE DROP ON DATABASE
BEGIN
insert into tab_mon_midify
select sid,username,program,machine,sys_context('userenv','ip_address'),sysdate
from sys.v_$session where audsid = userenv('sessionid');
COMMIT;
END;我是这么写的触发器,但是drop之后看tab_mon_midify表里面没数据,不明白啥情况啊
redo log里面有记录drop这种操作么?听闻10g的log不记录ddl操作另外,这库之前没配置logminer,生产环境想重启要申请很麻烦
我们系统全是用的dba权限用户,DDL触发器捕获不到
我们系统全是用的dba权限用户,DDL触发器捕获不到所有用户都是可以记录到的啊。 除非,你是所有的人都用一个账号。 那也可以知道是在什么时间被删除的不是。