首页 > Linux操作系统 > Linux操作系统 > Oracle 登录触发器
下面是Oracle登录触发器的一个例子:
1.创建记录表。
[oracle@rhel1 ~]$ sqlplus system/oracle //不能用SYS创建
SQL*Plus: Release 10.2.0.5.0 - Production on Sun Jun 13 19:54:38 2010
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
SQL> create table logon_logs (logon_time date,
2 username varchar2(30),
3 machine varchar2(64),
4 ipadr varchar2(30),
5 program varchar2(64),
6 module varchar2(64),
7 terminal varchar2(64)
8 )
9 tablespace users; //指定存放记录表的表空间
表已创建。
该表根据需要可创建为分区表。
2.创建登录触发器。
SQL> create or replace trigger logusersconnects
2 after logon on database //如果是on schema的话只对创建用户进行跟踪
3 begin
4 insert into logon_logs values(sysdate,
5 user,sys_context('USERENV','HOST'),
6 sys_context('USERENV','IP_ADDRESS'),
7 sys_context('USERENV','ACTION'),
8 sys_context('USERENV','MODULE'),
9 sys_context('USERENV','TERMINAL'));
10 commit;
11 end;
12 /
触发器已创建
可以利用sys_context跟踪更多的会话信息,参考文档:http://www.techonthenet.com/oracle/functions/sys_context.php
3.使用客户端登录数据库。
4.查看登录日志。
SQL> set linesize 200
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
SQL> select * from logon_logs where username !='SYS';
LOGON_TIME USERNAME MACHINE IPADR PROGRAM MODULE TERMINAL
------------------- -------------------- ------------------------- -------------------- -------------------- -------------------- --------------------
2013-08-18 12:15:57 SYSTEM WORKGROUP\LIUBINGLIN-PC sqlplus.exe LIUBINGLIN-PC
2013-08-18 12:16:31 SYSTEM WORKGROUP\LIUBINGLIN-PC 127.0.0.1 plsqldev.exe LIUBINGLIN-PC
2013-08-18 12:16:31 SYSTEM WORKGROUP\LIUBINGLIN-PC 127.0.0.1 plsqldev.exe LIUBINGLIN-PC
有登录触发器当然就有登出(logoff)触发器,登出触发器可以用于收集会话的历史数据,对于发现会话存在的问题有一定的帮助。
--end--
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23135684/viewspace-665082/ ,如需转载,请注明出处,否则将追究法律责任。