Posted on 2006-02-14 12:26
柳隨風 閱讀(658)
評論(0) 編輯 收藏 所屬分類:
oracle日常管理
實現方式比較簡單:
?創建用戶登陸數據庫的觸發器,使用工具包記載客戶端登陸的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%';