oracle怎么捕获用户登录信息,如SID,IP地址等

可以利用登录触发器,如

  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跳过。

原文地址:https://www.cnblogs.com/fanweisheng/p/11113418.html

时间: 06-28

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

Oracle 中记录用户登录信息

我们可以使用 Oracle Audit 函数来记录用户登录信息,但是如果开放了 Audit 函数将会使 Oracle 性能下降,甚至导致 Oracle 崩溃.那我们如何才能记录用户登录信息呢?其实我们可以通过建立触发器的方式来实现.方法如下: 1. 用 sys 用户登录 Oracle2. 创建记录用户登录信息的表CREATE TABLE LOG$INFORMATION (    ID        NUMBER(10),    USERNAME  VARCHAR2(30),    LOGINTI

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

我们先看两个文件 /etc/ppp/ip-up /etc/ppp/ip-down 这两个文件为shell脚本,当PPTP用户连接或者断开时分别执行这两个文件,并且会带相应的参数 这些参数有 $PEERNAME //PPTP用户名 ${1} //网卡名称,例如ppp0 $4 //网关IP,例如192.168.2.1 $5 //用户静态IP,例如192.168.2.10 $6 //用户真实IP地址,118.13.24.189 $BYTES_SENT //发送的总流量 $BYTES_RCVD //接收

查看用户登录信息并统计登陆的次数

一.查看用户登录信息的命令 1.    w                查看当前系统上登录的所有用户的信息 2.    who            查看该shell终端下登录用户的详细信息 3.    whoami      查看本shell终端下登陆的用户 4.    last            查看历史的所有登录信息 [[email protected]_server workspace]# w  14:59:23 up 19 days,  5:35,  1 user,  load 

把discuzX 的用户登录信息添加到纯静态页面

把discuzX 的用户登录信息添加到纯静态页面 转:http://cq6.com/forum.php?mod=viewthread&tid=86560&extra=page%3D1&page=1 分享&收藏 花了几个小时的间,终于把discuzX 的用户登录信息加到纯静态页面了:演示地址:http://cq6.com/bm/ 源码:1. zx.php (存放在网站根目录) <?php require './source/class/class_core.php';

java-第六章-for-验证用户登录信息

import java.util.Scanner; public class A03 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); for (int i = 0; i < 3; i++) { System.out.println("请输入用户名:"); String admin = input

系统管理与用户登录信息查看命令(二)

关机: halt,poweroff,shutdown,init 0 重启: reboot,shutdown, init 6 用户登录信息查看:whoami,who,w,last,users 2.1.halt 这个命令相当于直接拔电源关机,不管你目前的系统状态如何,进行硬件强制关机.一般不建议使用. 2.2.poweroff poweroff意思是立即关机,跟shutdown -h now效果一样,在系统启动级别为3的情况下,不建议使用. 2.3.shutdown 功能:关机 语法:shutdow

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

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 在解决了asp.net core中访问memcached缓存的问题后,我们开始大踏步地向.net core进军--将更多站点向asp.net core迁移,在迁移涉及获取用户登录信息的站点时,我们遇到了一个问题--如何在asp.net core

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

php使用session来保存用户登录信息 使用session保存页面登录信息 1.数据库连接配置页面:connectvars.php <?php//数据库的位置define('DB_HOST', 'localhost');//用户名define('DB_USER', 'root');//口令define('DB_PASSWORD', '19900101');//数据库名define('DB_NAME','test') ;?> 2.登录页面:logIn.php <?php//插入连接数据

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

有的时候做网站,就需要记住用户登录信息,下次再登录网站时,不用重复输入用户名和密码,原理是浏览器的cookie把状态给记住了! 那么具体是怎么实现的呢?下面博主将一部分代码贴出来,想要完整版的Demo可以到百度云和码云下载, 百度云下载链接:https://pan.baidu.com/s/1rfQNxpM8WGxkBbdiS1mLeQ    密码:if1q 马云下载链接:https://gitee.com/WuFengZui/RememberLoginDemo    [没有下载链接的都是耍流氓