可以利用登录触发器,如

  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. Http post请求案例

    public RmiRespBase sendHttpRes(String jsonParamStr, String url, String apiName,String systemId,Strin ...

  2. javascript date utc

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/huangbin10025/article/details/37503465 近期在使用highsto ...

  3. BZOJ2982: combination Lucas模板

    2982: combination Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 734  Solved: 437[Submit][Status][Di ...

  4. Effective Modern C++ 条款4:掌握查看型别推导结果的方法

    采用何种工具来查看型别推导结果,取决于你在软件开发过程的哪个阶段需要该信息.主要研究三个可能的阶段:撰写代码阶段.编译阶段.运行时阶段. IDE编译器 IDE中的代码编译器通常会在你将鼠标指针选停止某 ...

  5. 洛谷P3299 保护出题人

    注意每一关的时候,前一关的植物会消失.保留整数指四舍五入. 解:冷静分析一波,列一个式子出来,发现每一关的植物攻击力要是(ai + ... + aj) / (xi + d * (i - j))的最大值 ...

  6. Django项目:CRM(客户关系管理系统)--38--30PerfectCRM实现King_admin编辑自定义字段验证

    # kingadmin.py # ————————04PerfectCRM实现King_admin注册功能———————— from crm import models #print("ki ...

  7. Hibernate - HHH000352: Unable to release batch statement

    这是hibernate的一个bug,具体看https://hibernate.atlassian.net/browse/HHH-11732?attachmentViewMode=list When u ...

  8. 零开始Android逆向教程(一)——初探Android逆向

    这段时间因为某些业务驱动,开始研究一些逆向相关的东西,浏览了下其所包含的大致内容,发现真是一个新大陆,跟之前耳听目染过的一些门面介绍完全不是一个层级的,真正的印证了下手难这一说法.   谨此以本文开始 ...

  9. jeecms内容管理系统使用了哪些技术

    jeeecms作为国内Java开源内容管理系统的龙头老大(感谢jeecms研发小组的辛苦劳作),技术架构也是比较成熟的,当然涉及到的技术也就相对多一些 看看jeecms内容管理系统使用了哪些技术 we ...

  10. Linux下安装docker,更改镜像仓库地址,并部署springboot应用

    今天做不成的事,明天也不会做好. 各位同学大家好,随着docker的快速发展,越来越多的人开始使用,一方面随着容器化这个趋势越来越火,docker成为了其中的佼佼者:二来容器化确实降低了运维的门槛,让 ...