【问题标题】:How to restrict no one disable trigger in oracle如何限制没有人在oracle中禁用触发器
【发布时间】:2020-04-15 12:26:24
【问题描述】:

我在插入或更新之前在表上创建触发器。我知道用户可以使用 Alter trigger disable 选项禁用触发器。我希望任何用户甚至 SYS 用户限制都禁用特定触发器。我正在使用 Oracle 数据库 11g。

如何实现这个目标?

谢谢

【问题讨论】:

  • 您可以为非 SYS 用户禁用。作为超级管理员用户禁用 SYS 是矛盾的。
  • 要禁止 SYS 对您的对象执行某些操作,您需要 DB Vault。否则,您可以尝试在答案中提出的解决方案,这会使管理员的生活更加困难,但这不是防弹的。

标签: oracle oracle11g ddl database-trigger


【解决方案1】:

database 需要 DDL 触发器:

create or replace trigger trg_ddl before ddl on database
declare
  v_oty          varchar2(75) := ora_dict_obj_type;
  v_evt          varchar2(75) := ora_sysevent;
  v_olu          varchar2(75) := nvl(ora_login_user,'Undetermined Schema');
begin     
  if ( nvl(v_evt,'X--|') = 'ALTER' and nvl(v_oty,'Y-|') = 'TRIGGER' 
                                   and nvl(olu,'Z|--|') not in ('SYS','SYSTEM') ) then 
    raise_application_error( -20900 ,'Forbidden Operation');
  end if; 
end;

【讨论】:

    猜你喜欢
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多