Oracle中的System Triggers(DDL触发器)

2014-11-24 17:31:36 · 作者: · 浏览: 0

这算是比较偏门的知识了,但是有很多实际意义,可以帮助DBA完成一些日常的管理工作,比如可以禁用一些用户的功能(禁止用户修改或者删除某一个表,限制IP登陆等)。


概述


SCHEMA trigger:


创建于某一个schema上面,并且经由某些DDL语句触发执行。具体看下文链接更多的DDL event。


Database trigger:


数据库触发器基于数据库之上,由某些数据库级别的事件触发。具体看下文链接更多的Database event。


触发模式


与DML触发器一样,有两种触发模式


before:在语句执行前触发


after:在语句执行后触发


这个就不用细说了。


简单示例


限制IP登陆


组织IP为192.168.100.71的机器发出的连接请求。


create or replace trigger limit_ip


AFTERLOGON on database


begin


ifSYS_CONTEXT('USERENV', 'ip_address') = '192.168.100.71' then


raise_application_error(-20999, 'Cann''t logon this database.');


end if;


end;


C:\Users\fengjun>sqlplusscott/tiger@192.168.100.221:1521/repo


SQL*Plus: Release 11.2.0.3.0 Production on 星期二 2月 25 09:49:182014


Copyright (c) 1982, 2011, Oracle. All rights reserved.


ERROR:


ORA-00604: 递归 SQL 级别 1 出现错误


ORA-20999: Cann't logon this database.


ORA-06512: 在 line 2


注:如果用户拥有DBA权限,则不受此触发器影响。