PLSQL_Oracle Logon Trigger的建立

简介: 20150609 Created By BaoXinjian 一、摘要 oracle logon trigger一般用来审计用户登录信息或者限制用户登录,虽说不常用,但仍不失为一种好办法。   1.

20150609 Created By BaoXinjian

一、摘要


oracle logon trigger一般用来审计用户登录信息或者限制用户登录,虽说不常用,但仍不失为一种好办法。

 

1. 不能审计dba用户登录

2. 什么时候适合使用

It is advised you use this trigger only when

(1) not using archive logging on the database or

非归档模式

(2) there are few logons to the database.

登录次数少

 

二、锁定统计信息


Step1. 创建审计表

CREATE TABLE gavin.bxj_logonlog(
  os_user varchar2(30),
  user_name varchar2(30),
  logon_time date,
  session_user varchar2(30),
  ip_address varchar2(15),
  program varchar2(30)
);

Step2.  创建Logon Trigger

CREATE OR REPLACE TRIGGER gavin.bxj_on_logon
  AFTER logon ON DATABASE
DECLARE
  user_name varchar2(30);
  os_user      varchar2(30);
  v_sid        number;
  v_su         varchar2(15);
  v_program    varchar2(30);
  v_ip         varchar2(15);
BEGIN
  EXECUTE IMMEDIATE 'select distinct sid from sys.v_$mystat'
    INTO v_sid;

  EXECUTE IMMEDIATE 'select osuser, username, program from sys.v_$session where sid = :b1'
    INTO os_user, user_name, v_program
    USING v_sid;
    
  SELECT sys_context('userenv', 'SESSION_USER') INTO v_su from dual;
  SELECT sys_context('userenv', 'IP_ADDRESS') INTO v_ip from dual;
  
  INSERT INTO gavin.bxj_logonlog
  VALUES
    (os_user, user_name, sysdate, v_su, v_ip, v_program);
    
  --禁止WWW账号登陆
  IF (user_name = 'WWW') THEN
    DBMS_SESSION.SET_IDENTIFIER('about to raise app_error..');
    RAISE_APPLICATION_ERROR(-20003, 'You are not allowed to connect to the database');
  END IF;
  
  --启用GAVINTEST账号的所有操作的trace记录
  IF user = 'GAVINTEST' THEN
    EXECUTE IMMEDIATE 'alter session set statistics_level=ALL';
    EXECUTE IMMEDIATE 'alter session set max_dump_file_size=UNLIMITED';
    EXECUTE IMMEDIATE 'alter session set tracefile_identifier='''||user||'_10046''';
    EXECUTE IMMEDIATE 'alter session set events ''10046 trace name context forever, level 12''';
  END IF;   
END;
/

Step3. 使用普通账号登陆,用以测试查看BXJ_LOGONLOG审计表记录

 

Step4. 使用WWW账号登陆,用以测试是否允许登录

 

Step5. 使用GAVINTEST账号登陆,用以而是是否产生trace file

 

Thanks and Regards

参考:Matelink - How To Create A Trigger To Capture User Information On Logon [ID 454088.1]

ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建
相关文章
|
SQL Oracle 关系型数据库
xDB Replication Server - PostgreSQL, Oracle, SQL Server, PPAS 全量、增量(redo log based, or trigger based)同步(支持single-master, mult-master同步, 支持DDL)
xDB Replication Server - PostgreSQL, Oracle, SQL Server, PPAS 全量、增量(redo log based, or trigger based)同步(支持single-master, mult-master同步, 支持DDL)
838 0
|
SQL Oracle 关系型数据库
xDB Replication Server - PostgreSQL, Oracle, SQL Server, PPAS 全量、增量(redo log based, or trigger based)同步(支持single-master, mult-master同步, 支持DDL)
标签 PostgreSQL , xDB replication server , sql server , oracle , ppas , 同步 , ddl , dml , 全量 , 增量 , log based , trigger based , smr(single-master replication) , mmr(multi-master replication) 背景 Post
541 0
|
SQL Oracle 关系型数据库
PostgreSQL 物化视图(Oracle同步到PG,PG同步到PG) - by pgsnapshot (plperlu trigger) (支持类似Oracle的mvlog fast complete force刷新)
标签 PostgreSQL , 物化视图 , 增量刷新 , mvlog , Oracle 同步到 PG , PG 同步到 PG 背景 PostgreSQL自身的物化视图没有MVLOG,也就是说,刷新的时候是VIEW定义产生的记录与MV已刷新的记录进行比对,进行增量更新的过程。
3301 0
|
SQL Oracle 关系型数据库
sql: Oracle 11g create table, function,trigger, sequence
--书藉位置Place目录 drop table BookPlaceList; create table BookPlaceList ( BookPlaceID INT PRIMARY KEY, --NUMBER BookPlaceName nvarchar2(500) not null, BookPlaceCode varchar(100) null,
1207 0
|
SQL Oracle 关系型数据库
PLSQL_Oracle Trigger触发器的基本概念和用法
2014-06-14 Created By BaoXinjian 一、基本概念 触发器是许多关系数据库系统都提供的一项技术。在ORACLE系统里,触发器类似过程和函数,都有声明,执行和异常处理过程的PL/SQL块。
1063 0
|
1月前
|
存储 自然语言处理 Oracle
Oracle数据库字符集概述及修改方式
【8月更文挑战第15天】Oracle 数据库字符集定义了数据的编码方案,决定可存储的字符类型及其表示方式。主要作用包括数据存储、检索及跨系统传输时的正确表示。常见字符集如 AL32UTF8 支持多语言,而 WE8MSWIN1252 主用于西欧语言。修改字符集风险高,可能导致数据问题,需事先备份并评估兼容性。可通过 ALTER DATABASE 语句直接修改或采用导出-导入数据的方式进行。完成后应验证数据完整性。此操作复杂,须谨慎处理。
|
1月前
|
数据采集 Oracle 关系型数据库
实时计算 Flink版产品使用问题之怎么实现从Oracle数据库读取多个表并将数据写入到Iceberg表
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
2天前
|
Oracle 关系型数据库 数据库
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 数据库没有备份,无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件,急需恢复zxfg用户下的数据。 出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不一致等。数据库恢复工程师对数据库文件进一步检测、分析后,发现sysaux01.dbf文件损坏,有坏块。 修复并启动数据库后仍然有许多查询报错,export和data pump工具使用报错。从数据库层面无法修复数据库。
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例

推荐镜像

更多