ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle 登录触发器

Oracle 登录触发器

原创 Linux操作系统 作者:尛样儿 时间:2010-06-12 10:19:28 0 删除 编辑


下面是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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle数据库管理员,Oracle数据库系统构架员;2012年7月出版《构建最高可用Oracle数据库系统:Oracle 11gR2 RAC管理、维护与性能优化》一书;Oracle 10g OCM。

注册时间:2010-01-05

  • 博文量
    483
  • 访问量
    5650290