我现在进行数据库审计的研究;
主要目的是纪录用户对一些关键表的操作,并能确定用户来源。主要通过oracle自带的审计功能和triggle结合实现。由于水平有限,在试验过程中总是不能在数据库审计表中获得用户实际的IP地址,只能获得数据库用户登陆时的机器名称,这样实际上就不能在广域网上定位用户的来源。
现在计划采用一种间接的方法可以得到用户的IP。通过分析Listener,可以定位用户的IP地址和用户使用的终端。当用户连接到Oracle数据库的时候,都是要通过数据库的Listener,而后连接到DBMS中的,而数据库Listener的日志中记录了用户连接的时间、用户IP地址、用户连接方式(采用什么样的客户端进行数据库连接的)、用户连接过程中使用的机器名称等信息。大家有没有什么别的办法能直接获取用户IP.

解决方案 »

  1.   

    create or replace trigger drop_info 
    after drop on mfg0513user.schema  -- 在mfg0513user用戶上創建審計drop的觸發器
    begin 
        insert into drop_log
         (session_id,
         drop_time,
         ip_address,
         object_owner,
         object_name,
         object_type,
         drop_by_user)
         values(USERENV('SESSIONID'),
         sysdate,
         SYS_CONTEXT('USERENV','IP_ADDRESS'),
         sys.dictionary_obj_owner,
         sys.dictionary_obj_name,
         sys.dictionary_obj_type,
         sys.login_user);    
    end;是的,楼上所讲正是.
      

  2.   

    在8i以上的版本中可以實現﹐可是在oracle8.05中怎么實現﹐請求高手門救救我!