beauty_beast

上善若水 厚德载物

实现方式比较简单:
 创建用户登陆数据库的触发器,使用工具包记载客户端登陆的ip,使用logminer分析相关的归档文件以及联机重做日志,查找恶意删除数据的客户端信息。
条件:  以sys用户执行如下脚本
创建相关脚本:
create table login_log
(
SID NUMBER(16),   
SERIAL NUMBER(16),   
MACHINE VARCHAR2(64) ,
OSUSER VARCHAR2(30),   
USERNAME VARCHAR2(30),
PROGRAM VARCHAR2(48),
LOGINTIME DATE
);

create or replace trigger logon_trigger
after logon on database
declare
LPRG VARCHAR2(48);
LUSERNAME varchar2(30);
LOSUSER   varchar2(30);
LMACHINE  varchar2(64);
LSID pls_integer;
LSERIAL pls_integer;
begin
--在会话信息中增加客户端ip地址
dbms_application_info.set_client_info(sys_context('userenv', 'ip_address'));
select sid,serial#,machine,osuser,program,username
into LSID,LSERIAL,LMACHINE,LOSUSER,LPRG,LUSERNAME from v$session
where sid=(select sid from v$mystat where rownum<2);
insert into login_log(sid,serial,machine,osuser,username,program,logintime)
values (LSID,LSERIAL,LMACHINE,LOSUSER,LUSERNAME,LPRG,sysdate);end;

分析相关日志时,通过v$logmnr_contents视图中session_info字段中的信息可以查找到相关信息。
类似如下的sql:
     select session_info,sql_redo from v$logmnr_contents where  sql_redo like '%drop%';





只有注册用户登录后才能发表评论。


网站导航: