`
chenhua_1984
  • 浏览: 1255472 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Oracle logon trigger

阅读更多

1、问题提出

如下只是一个举例,自己修改一下可以完成更多的功能。想完成如下的功能:

  

<1>某一个Ip段的用户不能登陆
<2>针对的只是某一个或几个用户
<3>对连接所用的应用程序也进行了限定。

 

2、问题解决

<1>如果你的logon trigger不是建在sys用户下,v_$session的查询权限需要授权给给建trigger的用户。

我选择在system用户下建:
SQL>connect / as sysdba;
SQL>grant select on v_$session to system;

<2>logon trigger体

CREATE OR REPLACE TRIGGER QIUYB$LOGON AFTER
LOGON ON DATABASE
DECLARE
V_PROGRAM VARCHAR2(48);
V_MESSAGE VARCHAR2(1000);
V_BAD_LOGON EXCEPTION;
BEGIN
SELECT PROGRAM INTO V_PROGRAM
FROM V$SESSION
WHERE AUDSID = SYS_CONTEXT('USERENV', 'SESSIONID')
AND rownum<2;

IF USER IN ('QIUYB','HR')
AND sys_context('USERENV','ip_address') LIKE '10.199.168.%'
AND sys_context('USERENV','ip_address') LIKE '10.199.173.%'
AND lower(v_program)<>'zhyz_report.exe'
THEN
raise V_BAD_LOGON;
END IF;
EXCEPTION
WHEN v_bad_logon THEN
v_message := 'Uh Uh Uh! - This user can not logon with this software!!';
RAISE_APPLICATION_ERROR(-20002, v_message);
WHEN OTHERS THEN
v_message := 'FATAL ERROR - QIUYB$LOGON TRIGGER- Please Contact Your DBA!!' ||
CHR(10) || SQLERRM;
RAISE_APPLICATION_ERROR(-20003, v_message);

END;

3、特别说明

logon trigger对于dba权限的用户是没效力的,只会在alter.log中生成报错信息。

分享到:
评论

相关推荐

    oracle trigger at a certain time

    在Oracle数据库中,触发器(Trigger)是一种存储过程,它会在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行。标题“oracle trigger at a certain time”指的是创建一个定时触发器,即在特定时间点...

    查看登录oracle数据库用户记录.docx

    CREATE OR REPLACE TRIGGER LOG_LOGON AFTER LOGON ON DATABASE BEGIN INSERT INTO EVENT_LOG (login_time, username) VALUES (SYSTIMESTAMP, USER); COMMIT; END; ``` 查看登录 Oracle 数据库用户记录 最后,...

    oracle中记录用户登录信息的触发器的例子

    通过上述步骤,我们成功地在Oracle数据库中创建了一个触发器`logon_trigger`,用于记录用户的登录信息。这一功能不仅可以帮助管理员更好地监控系统访问情况,还能够为日后的审计工作提供必要的数据支持。在实际应用...

    oracle安全审计之登录登出、ddl操作记录触发器

    AFTER LOGON ON DATABASE BEGIN INSERT INTO audit_log (event_time, user_name, ip_address) VALUES (SYSDATE, USER, SYS_CONTEXT('USERENV', 'IP_ADDRESS')); END; / ``` 登出触发器类似,但通常会包含断开会话...

    oracle中用户连接问题.docx

    CREATE OR REPLACE TRIGGER logon_history AFTER LOGON ON DATABASE BEGIN INSERT INTO session_history SELECT username, SYSDATE, SYS_CONTEXT('USERENV', 'IP_ADDRESS') FROM v$session WHERE audsid...

    Oracle禁用操作系统认证方式登陆及SYS远程登录

    在企业级应用环境中,Oracle数据库系统作为核心的数据存储与处理平台,其安全性尤为重要。本篇文章主要针对如何禁用Oracle数据库的操作系统认证方式以及禁止SYS用户远程登录两个方面进行详细介绍,旨在帮助读者理解...

    oracle_基本的几种触发器

    BEFORE | AFTER STARTUP | SHUTDOWN | LOGON | LOGOFF ON DATABASE BEGIN -- 在这里编写触发器的动作 END; ``` 例如,为了记录数据库关闭的时间,可以创建以下触发器: ```sql CREATE OR REPLACE TRIGGER db_...

    在Oracle中使用登录触发器初始化用户会话

    CREATE OR REPLACE TRIGGER DBT_LOGON AFTER LOGON ON DATABASE BEGIN HR.HR_CONTEXT_PKG.INITIALIZE_HR_CONTEXT; EXCEPTION WHEN OTHERS THEN NULL; -- 处理错误 END; / ``` 一旦设置完成,任何应用程序都能...

    [Oracle] 如何使用触发器实现IP限制用户登录

    CREATE OR REPLACE TRIGGER logon_ip_control AFTER LOGON ON DATABASE DECLARE ip STRING(30); user STRING(30); BEGIN SELECT SYS_CONTEXT('USERENV', 'SESSION_USER') INTO user FROM dual; SELECT SYS_...

    Oracle 常用命令举例.pdf

    CREATE OR REPLACE TRIGGER tr_logon AFTER LOGON ON DATABASE BEGIN DBMS_OUTPUT.PUT_LINE('User logged in'); END; / ``` #### 10.5 insteadof 触发器 `INSTEAD OF` 触发器主要用于视图上,当对视图执行插入、...

    触发器,trigger

    ### 触发器(Trigger)概述 触发器是一种存储过程,它被定义为当特定的事件发生时自动执行。在数据库管理系统(DBMS)中,触发器被广泛应用于Oracle等关系型数据库系统中,用于实现复杂的业务逻辑或者数据完整性...

    oracle_v$session_v$session_wait用途详解

    CREATE OR REPLACE TRIGGER on_logon_trigger AFTER LOGON ON DATABASE BEGIN DBMS_APPLICATION_INFO.SET_CLIENT_INFO(SYS_CONTEXT('USERENV', 'IP_ADDRESS')); END; ``` - 查询客户端的 IP 地址: ```sql ...

    ORACLE应用经验(1)

    - `EXECUTE_TRIGGER`函数执行指定的触发器,这对于响应特定事件或操作非常有用。 5. **警告与消息处理**: - `Set_Alert_Property`和`Show_Alert`用于创建和显示警告,提供用户交互。根据用户的选择(例如点击...

    Oracle数据库日常维护手册.pdf

    - **SQL命令**:`SELECT sid, serial#, username, osuser, machine, program, status, logon_time FROM v$session WHERE status = 'INACTIVE';` - 用于检查是否有长时间未响应的进程。 - 这些进程可能会占用宝贵的...

    Oracle应用常见傻瓜问题 1000问

    SELECT DBMS_METADATA.GET_DDL('TRIGGER', 'trigger_name') AS ddl FROM dual; ``` #### 12. 如何计算一个表占用的空间的大小? 可以通过查询`DBA_SEGMENTS`视图来获取表的空间使用情况。例如: ```sql SELECT ...

    Oracle8触发器系统事件的应用.pdf

    此外,Oracle8还支持系统事件,如数据库启动(STARTUP)、关闭(SHUTDOWN)和错误消息,以及用户事件,如登录(LOGON)和登出(LOGOFF)。 系统事件的属性提供了丰富的信息,例如操作对象的名称、所有者、开始时间...

    oracle异常及触发器.pptx

    3. **系统触发器**:如`LOGON`和`ALTER SYSTEM`触发器,分别在用户登录和系统改变时触发,用于实现特定的系统行为。 触发器的编写类似于普通的PL/SQL程序,但它们在后台运行,不需要显式调用。例如,创建一个在插入...

    Oracle应用项目—— 触发器实例.pdf

    在【例1】中,我们看到了一个替代触发器(INSTEAD OF trigger)的例子。替代触发器主要用于处理对视图的DML操作。在本例中,创建了一个名为VW_GOODSINFO的视图,它连接了SCOTT.GOODS和SCOTT.TYPES表来展示商品信息。...

    ocp原厂培训笔记(第三天)

    Oracle的LOGON和LOGOFF事件也在此范畴内。Oracle并不推荐在业务逻辑编程中广泛使用触发器,因为其DML操作不自动提交,与SQL Server等其他数据库系统不同。通常,Oracle会建议使用存储过程来实现业务逻辑。 Oracle的...

Global site tag (gtag.js) - Google Analytics