oracle追踪触发器语句,Oracle中怎样通过触发器来追踪用户的活动?

从Oracle8i开始,Oracle引入了特殊的触发器,这些触发器并不是和特殊的DML事件相关联的(DML事件,如,INSERT,UPDATE和DELETE)。这些系统级别的触发器包括数据库启动触发器,DDL触发器和最终用户登陆/注销触发器。

当Oracle提供了这些新的触发器的功能后,却还不清楚该如何使用这些触发器来追踪系统的使用情况。这篇文章描述了我是如何使用创建终端用户登陆/注销的方法来追踪终端用户的活动的。刚开始实行的追踪终端用户系统级触发器是非常新的,就因为它非常的新,所以它在功能上还是不够完善。

虽然用户登陆/注销触发器会告诉你用户登陆和用户注销的准确时间,可是代码却无法获取在用户会话阶段所进行活动的任何信息。 这些用户的登陆/注销触发器对于使用时间戳用户的应用程序而言是非常有用的。所谓的时间戳用户,就是那些在访问应用程序的时候被给定一个唯一的Oracle用户ID的人。

不使用时间戳Oracle用户ID的应用程序使用这些登陆/注销触发器可能没有什么用。 既然我们知道了基本的知识,那么,让我们看看该如何设计用户审计表来追踪用户的活动。 设计一个用户审计表 第一步就是创建一个用于存储终端用户登陆/注销触发器信息的Oracle表。

为了合理地设计这些触发器,让我们先来看看系统级的触发器。首先,我们在登陆的时候就会获取以下信息: 用户 ID—用户的ID ,用于执行登陆操作; 会话 ID—Oracle为用户控制会话的ID; 主机—计算机的名称; 登陆时间—一个用户登陆时间一样的Oracle时间数据类型,精确到0。

001秒。 现在,我们将获得仅仅优先于用户注销的信息。当用户在注销的时候,Oracle系统级触发器就可以提供这个用户当前的会话状态和活动信息: 最后的程序—用户在注销时执行的最后一个程序的名称。 最后的活动—用户在会话种执行的最后一个活动。 最后的模块—用户在注销前访问的最后一个模块的名称。

注销时间—一个和用户实际注销时间一样的一个Oracle时间数据类型,精确到0。001秒。 现在,我们知道了登陆和注销的信息,那么我们如何搜集这些信息,并管理它们呢?让我们来看看可用的选择。 用户表的标准化 因为用户的登陆/注销触发器是两个分离的实体,所以我们在设计支持存放这些信息的表的时候就可以有多种选择。

我们可以设计两个隔离的表格:一个用户登陆表和一个用户注销表。如果我们这样做了,那么在把这两个表连接起来的时候和判断哪个用户的登陆引起了哪个用户的注销等等事情的时候就会有困难。这个投机取巧的方法可能会给错误的产生制造机会。诸如,用户24在登陆前是如何注销的?等等。

现在,让我们考虑一个更好的选择。为了很好的使用表的信息,我们可以创建一个数据库,它里面包含一个单一的表,用于记录登陆和注销时间信息。这个方法就省去了连接表和关联数据的麻烦。另外,我们还将创建一个区域,用于计算每个用户在特定会话中所用去的时间。

这个计算预先由触发器做好,这样就可以节省时间,并且可以创建一个丰富的报表,这个我们后面会提到。 设计一个登陆触发器 一旦表格设计好了以后,接下来的步骤就是创建一个系统级的登陆触发器,它可以在发生登陆时间的时候记录尽可能多的信息。我创建的登陆审计触发器。

正像你看到的一样,我在这个表中创建了一些在登陆时可以使用到的信息值: 用户—建立Oracle会话的Oracle用户ID 会话ID—使用Oracle的SYS context功能从v$session 表中直接获取Oracle的会话ID。主机—使用Oracle的SYS context功能,在Oracle会话被创建的时候获取主机名。

请注意,对于使用Oracle并行服务器或者实际应用群的时候,获取主机名是非常重要的,因为我们可能同时和许多不同的远程主机都有会话连接。 登陆时间—获取实际工作登陆的时间,精确到0。001秒。请注意我们是如何把登陆时间划分成两个区域的。产生一个登陆日期和一个登陆时间可以给最后的报表带来很强的可读性。

既然登陆触发器已经创建好了,我们就需要创建一个注销触发器来获取用户完成会话的所有信息。

全部

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TotoiseSVN 使用参考文章

SVN使用教程总结 http://www.cnblogs.com/armyfai/p/3985660.html TotoiseSVN的基本使用方法 http://www.cnblogs.com/xilentz/archive/2010/05/06/1728945.html windows svn server and client and plugin的下载地址 https://www.visualsvn.com/downloads/ VisualSVN Server |…

oracle oci.dll的作用,ASP.NET bin目录中的Oracle oci.dll无法删除/不起作用

我按照这里的指示:http://splinter.com.au/blog/?p156尝试使用较新版本的ODP.NET而不安装Oracle 11g客户端.到目前为止,除了重启IIS之外,我都遵循了一切.然而,这引起了一些问题,我真的很好奇为什么.如果我尝试使用ODP.NET,我遇到了Oracle连接尝试连接时抛出的空白异…

POJ 3041 Asteroids (对偶性,二分图匹配)

题目:POJ 3041 Asteroids http://poj.org/problem?id3041 分析: 把位置下标看出一条边,这显然是一个二分图最小顶点覆盖的问题,Hungary就好。 挑战: 输出一组可行解。构造,已知二分图的两个点集U和V&#…

LeetCode 2095. 删除链表的中间节点(快慢指针)

文章目录1. 题目2. 解题1. 题目 给你一个链表的头节点 head 。删除 链表的 中间节点 ,并返回修改后的链表的头节点 head 。 长度为 n 链表的中间节点是从头数起第 ⌊n / 2⌋ 个节点(下标从 0 开始),其中 ⌊x⌋ 表示小于或等于 x…

linux 普通用户间切换,Linux中管理员用户与普通用户之间的切换

jsp页面添加一个集合数组到action(用序列化提交)页面的js //点击a标签增加删除 var i0; $("#a").on("click",function(){ var $newtr $("& ...JS 随机数function GetRandomNum(Min,Max){ var Range Max - Min; var Rand Math.random(); return…

sql 函数 总结

聚合函数 Avg(numeric_expr)返回integer、decimal、money、float---返回组中各值的平均值 Count(*|column_name|distinct column_name) 返回integer---返回表中的记录数|返回指定列的数目|返回指定列的不同值的数目 Count_big(*|column_name|distinct column_name…

LeetCode 2096. 从二叉树一个节点到另一个节点每一步的方向(最小公共祖先)

文章目录1. 题目2. 解题1. 题目 给你一棵 二叉树 的根节点 root ,这棵二叉树总共有 n 个节点。 每个节点的值为 1 到 n 中的一个整数,且互不相同。 给你一个整数 startValue ,表示起点节点 s 的值,和另一个不同的整数 destValue …

linux下实现内存监视,shell脚本来监视Linux上的内存使用情况

shell脚本来监视Linux上的内存使用情况监视所有内容,例如CPU利用率,内存利用率,交换利用率,磁盘空间利用率等等。如果您只有很少的系统并且要监视它们,那么编写一个小的Shell脚本可以使您的任务非常容易。我们添加了两…

大数据的学习历程

大数据scala语言不仅可以在函数中嵌套函数,还可以定义偏函数。 def sum(a :Int,b:Int,c:Int) abcval pld sum _println(pld(1,2,3))println(pld.apply(1, 2, 3))val ped sum(1,_:Int,3)println(ped(2))println(ped.apply(2))val add (x : Int)> x2println(ad…

LeetCode 2097. 合法重新排列数对(欧拉路径)

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的二维整数数组 pairs &#xff0c;其中 pairs[i] [starti, endi] 。如果 pairs 的一个重新排列&#xff0c;满足对每一个下标 i &#xff08; 1 < i < pairs.length &#xff09;都有 endi-1 starti &#xff0c…

linux防火墙 33001端口,Linux操作系统下IPTables配置方法详解

如果你的IPTABLES基础知识还不了解,建议先去看看。我们来配置一个filter表的防火墙1、查看本机关于IPTABLES的设置情况[roottp ~]# iptables -L -nChain INPUT (policy ACCEPT)target prot opt source destinationChain FORWARD (policy ACCEPT)target prot opt source destina…

《如何在大学里脱颖而出(How to Win at College)》读书笔记

《如何在大学里脱颖而出(How to Win at College)》读书笔记 图书简介 中文版&#xff1a; 英文版&#xff1a; 作者卡尔纽波特&#xff08;Cal Newport&#xff09;于 2004 年6月以优等生荣誉学会会员身份毕业于达特茅斯学院。曾在《华尔街日报》的学报和《今日商务》等杂志上发…

LeetCode 2099. 找到和最大的长度为 K 的子序列

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums 和一个整数 k 。 你需要找到 nums 中长度为 k 的 子序列 &#xff0c;且这个子序列的 和最大 。 请你返回 任意 一个长度为 k 的整数子序列。 子序列 定义为从一个数组里删除一些元素后&#xff0c;不改变剩下元素的顺…

cms安装教程Linux,DoraCMS安装教程(linux)

最近在熟悉linux环境&#xff0c;也基本上把DoraCMS部署上去了&#xff0c;本教程基于ubuntu server 14.0.4&#xff0c;其它linux版本部署方式基本上差不多&#xff0c;下面详细说明一下&#xff1a;1、进入server环境下&#xff0c;在ubuntu目录下建立文件夹softbak,我们用来…

hdu 2049 考新郎

假设一共有N对新婚夫妇,其中有M个新郎找错了新娘,求发生这种情况一共有多少种可能. 和之前那道题一样&#xff0c;是错排&#xff0c;但是要乘上排列数。 选对的人有C(N,M)个组合&#xff0c;将它们排除掉&#xff0c;剩下的人就是错排了 1 #include<iostream>2 #include…

LeetCode 2100. 适合种地的日子(计数)

文章目录1. 题目2. 解题1. 题目 你和一群强盗准备种地。给你一个下标从 0 开始的整数数组 security &#xff0c;其中 security[i] 是第 i 天 天气热的数量。日子从 0 开始编号。同时给你一个整数 time 。 如果第 i 天满足以下所有条件&#xff0c;我们称它为一个适合种地的日…

如何在linux中使用u盘,如何在Linux系统下使用U盘

如何在Linux系统下使用U盘Linux系统中U盘被视为SCSI设备, SCSI设备对应的设备文件格式为“sdX” 系统中的第一个SCSI设备表示“sda”&#xff0c;第二个表示为“sdb”等。下面是jy135小编收集整理的U盘里面的.如何在Linux系统下使用U盘&#xff0c;欢迎阅读。在Linux系统下&…

H3C路由器真是不行

“华三”在我的印象中在通信设备这方面是挺牛逼的&#xff0c;后来虽然卖给了紫光&#xff0c;但我一直认为这是资本的博弈&#xff0c;与华三自己本身没有关系&#xff0c; 直到我买了一台华三的路由器&#xff08;型号是ER3108GW千兆路由器&#xff09;之后&#xff0c;办公室…

linux sys存放内容,了解linux系统目录,sys,tmp,usr,var!

原标题&#xff1a;了解linux系统目录&#xff0c;sys,tmp,usr,var&#xff01;linux小白到大神的成长之路&#xff1a;了解linux系统目录&#xff0c;sys,tmp,usr,var&#xff01;本经验由宗龙龙原创,全文共600多字&#xff0c;阅读需要14分钟&#xff0c;如果文中存在错误&am…

LeetCode 2101. 引爆最多的炸弹(图的遍历)

文章目录1. 题目2. 解题1. 题目 给你一个炸弹列表。一个炸弹的 爆炸范围 定义为以炸弹为圆心的一个圆。 炸弹用一个下标从 0 开始的二维整数数组 bombs 表示&#xff0c;其中 bombs[i] [xi, yi, ri] 。xi 和 yi 表示第 i 个炸弹的 X 和 Y 坐标&#xff0c;ri 表示爆炸范围的…