可以利用登录触发器,如

  CREATE OR REPLACE TRIGGER tr_login_record

  AFTER logon ON DATABASE

  DECLARE

  miUserSid NUMBER;

  mtSession v$session%ROWTYPE;

  CURSOR cSession(iiUserSid IN NUMBER) IS

  SELECT * FROM v$session

  WHERE sid=iiUserSid;

  BEGIN

  SELECT sid INTO miUserSid FROM v$mystat WHERE rownum<=1;

  OPEN cSession(miUserSid);

  FETCH cSession INTO mtSession;

  --if user exists then insert data

  IF cSession%FOUND THEN

  INSERT INTO log$information(login_user,login_time,ip_adress,ausid,terminal,

  osuser,machine,program,sid,serial#)

  VALUES(ora_login_user,SYSDATE,SYS_CONTEXT ('USERENV','IP_ADDRESS'),

  userenv('SESSIONID'),

  mtSession.Terminal,mtSession.Osuser,

  mtSession.Machine,mtSession.Program,

  mtSession.Sid,mtSession.Serial#);

  ELSE

  --if user don't exists then return error

  sp_write_log('Session Information Error:'||SQLERRM);

  CLOSE cSession;

  raise_application_error(-20099,'Login Exception',FALSE);

  END IF;

  CLOSE cSession;

  EXCEPTION

  WHEN OTHERS THEN

  sp_write_log('Login Trigger Error:'||SQLERRM);

  END tr_login_record;

  在以上触发器中需要注意以下几点

  1、该用户有v_$session与v_$mystat的对象查询权限,可以在sys下对该拥护显式授权。

  2、sp_write_log原本是一个写日志的过程,可以置换为自己的需要,如null跳过。

  3、必须在创建该触发器之前创建一个log$information的表记录登录信息。

  

  [Q]怎么捕获整个数据库的DDL语句或者是说对象结构变化与修改

  [A]可以采用DDL触发器,如

  CREATE OR REPLACE TRIGGER tr_trace_ddl

  AFTER DDL ON DATABASE

  DECLARE

  sql_text ora_name_list_t;

  state_sql ddl$trace.ddl_sql%TYPE;

  BEGIN

  FOR i IN 1..ora_sql_txt(sql_text) LOOP

  state_sql := state_sql||sql_text(i);

  END LOOP;

  INSERT INTO ddl$trace(login_user,ddl_time,ip_address,audsid,

  schema_user,schema_object,ddl_sql)

  VALUES(ora_login_user,SYSDATE,userenv('SESSIONID'),

  sys_context('USERENV','IP_ADDRESS'),

  ora_dict_obj_owner,ora_dict_obj_name,state_sql);

  EXCEPTION

  WHEN OTHERS THEN

  sp_write_log('Capture DDL Excption:'||SQLERRM);

  END tr_trace_ddl;

  在创建以上触发器时要注意几点

  1、必须创建一个ddl$trace的表,用来记录ddl的记录

2、sp_write_log原本是一个写日志的过程,可以置换为自己的需要,如null跳过。

oracle怎么捕获用户登录信息,如SID,IP地址等的更多相关文章

  1. Oracle 中记录用户登录信息

    我们可以使用 Oracle Audit 函数来记录用户登录信息,但是如果开放了 Audit 函数将会使 Oracle 性能下降,甚至导致 Oracle 崩溃.那我们如何才能记录用户登录信息呢?其实我们 ...

  2. PPTP-VPN日志功能,记录用户登录时间,流量统计,IP地址等信息

    我们先看两个文件 /etc/ppp/ip-up /etc/ppp/ip-down 这两个文件为shell脚本,当PPTP用户连接或者断开时分别执行这两个文件,并且会带相应的参数 这些参数有 $PEER ...

  3. .NET跨平台之旅:ASP.NET Core从传统ASP.NET的Cookie中读取用户登录信息

    在解决了asp.net core中访问memcached缓存的问题后,我们开始大踏步地向.net core进军——将更多站点向asp.net core迁移,在迁移涉及获取用户登录信息的站点时,我们遇到 ...

  4. php使用session来保存用户登录信息

    php使用session来保存用户登录信息 使用session保存页面登录信息 1.数据库连接配置页面:connectvars.php <?php //数据库的位置 define('DB_HOS ...

  5. linux基础之用户登录信息查看命令

    用户登录信息查看命令 1.who命令 同一个账号通过不同终端登录也属于不同的登录信息,这里不同的终端包含虚拟终端和模拟终端,因为一个用户通过一个终端登录属于一个session 基本介绍 打印当前系统上 ...

  6. Asp.Net MVC记住用户登录信息 下次登录无需输入密码

    有的时候做网站,就需要记住用户登录信息,下次再登录网站时,不用重复输入用户名和密码,原理是浏览器的cookie把状态给记住了! 那么具体是怎么实现的呢?下面博主将一部分代码贴出来,想要完整版的Demo ...

  7. net mvc中实现记录用户登录信息(记住登录效果)

    现记录用户登录信息(记住登录效果) 本文讲述了使用cookies实现网站记住登录效果,效果如下: 主要实现方法,当用户选择记住登录时建立cookies保存用户名和用户密码,当用户登录不选择记住登录时, ...

  8. 【SVN/Visual Studio】清除/更换AnkhSVN的用户登录信息

    问题: 在VS开发环境下,使用SVN做版本控制,用了TortoiseSVN和插件AnkhSVN.提交代码到SVN服务器时,发现用的是别人的SVN帐号,不是自己的号(比如该电脑之前是别人在使用).想要清 ...

  9. 设置获取用户登录信息的Seeion类

    /** * * 保存用户上下文信息 * 还可以获取session * */ public class UserContext { public static final String USER_IN_ ...

随机推荐

  1. UITableViewHeaderFooterView can't change custom background when loading from nib

    down voteforite I've created a custom UITableViewHeaderFooterView and successfully load from nib int ...

  2. Delphi 设计模式:《HeadFirst设计模式》Delphi2007代码---组合模式之Menus[转]

     1  2{<HeadFirst设计模式>之组合模式 }  3{ 组合与单项的抽象父类           }  4{ 编译工具:Delphi2007 for win32}  5{ E-M ...

  3. PAT甲级——A1047 Student List for Course

    Zhejiang University has 40,000 students and provides 2,500 courses. Now given the registered course ...

  4. Neo4j Desktop 管理工具的安装和应用

    安装和启动Neo4j桌面 如果您还没有,请下载 Neo4j.使用提供的说明(下载时显示),按照步骤1安装并启动Neo4j Desktop应用程序.下载页面上的步骤2说明向您展示了如何设置您的第一个项目 ...

  5. Pandas绘图不支持中文解决方案

    参考博客:https://blog.csdn.net/weixin_42057852/article/details/80840215

  6. 解释性语言和非解释性语言,GIL锁

    解释性语言:python写的代码就被称为程序,cpu硬件能运行二进制代码指令.demo.py需要经过python解释器编译才做才能执行. 非解释性语言:例如c语言程序,同样需要写代码.demo.c这个 ...

  7. WPF:数据绑定--PropertyChangeNotification属性更改通知

      PropertyChangeNotification属性更改通知 实现效果:1.拍卖金额自动随属性值变化而通知界面绑定的值变化. 关键词 : INotifyPropertyChanged Obse ...

  8. nfs网络共享服务基础

    nfs原理 1.开启RPC服务 2.NFS向RPC服务注册启动的端口 3.用户向RPC询问NFS服务的端口 4.RPC返回端口给客户端 5.客户端通过获得的端口与NFS服务器进行数据传输 实验步骤 一 ...

  9. Angular js 具体应用(一)

    1,首先引用Angular  百度静态资源库搜索Angular  复制链接,在HTML中嵌入script 最好写在正文下面 <script type="text/javascript& ...

  10. Leetcode56. Merge Intervals合并区间

    给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 [1,3] ...