程序员刘杨

———没有写不出的程序,只有不努力的程序员。

2021年06月12日   码农之路   20 次浏览

公司oracle的开发环境数据库权限没做特别的限制,一个帐号供所有人开发人员使用,偶尔会出现重要的表被清空和删除的情况(可能是小白的误操作,也可能是程序的BUG),所以需要对核心表进行限制,以防止表被删除和数据丢失。

一、限制表的DDL操作

主要通过trigger在表进行DDL操作前进行控制:

create or replace trigger tr_ddl_deny
  before create or alter or drop or truncate on database
declare
  l_errmsg varchar2(500);
begin
  -- 哪些表不允许执行DDL操作
  if ora_dict_obj_name = 'SYS_CONFIG' or -- 参数表
     ora_dict_obj_name = 'SYS_MENU' or -- 菜单表
     ora_dict_obj_name = 'SYS_DICT' then  -- 字典表
    -- 不允许执行哪些DDL操作
    if ora_sysevent = 'CREATE' or ora_sysevent = 'ALTER' or
       ora_sysevent = 'DROP' or ora_sysevent = 'TRUNCATE' then
      l_errmsg := ora_sysevent || ' ' || ora_dict_obj_name ||
                  ',您没有权限执行此操作,请联系管理员。';
      raise_application_error(-20001, l_errmsg);
    end if;
  end if;

exception
  when no_data_found then
    null;
end tr_ddl_deny;

二、记录操作者信息

oracle只提供了一些基本的操作信息,没有记录操作者相关的信息,我们需要记录这些操作者信息来跟踪(主要是要找到原因防止线上事故),可以根据以下信息创建一个操作日志表,然后在弹出错误信息之前插入操作日志。

SELECT machine,
       SYS_CONTEXT('USERENV', 'IP_ADDRESS'),
       osuser,
       SYS_CONTEXT('USERENV', 'SESSION_USER'),
       program,
       TO_CHAR(audsid)
  FROM v$session
 WHERE audsid = USERENV('SESSIONID'));
赞 赏
申明:除非注明,本站文章均为原创,转载请以链接形式标明本文地址。 如有问题,请于一周内与本站联系,本站将在第一时间对相关内容进行处理。
本文地址: http://www.yyjjssnn.cn/articles/875.html

>>> Hello World <<<

这篇内容是否帮助到你了呢?

如果你有任何疑问或有建议留给其他朋友,都可以给我留言。

:wink: :twisted: :surprised: :smile: :smile9: :smile8: :smile7: :smile6: :smile5: :smile56: :smile55: :smile54: :smile53: :smile52: :smile51: :smile50: :smile4: :smile49: :smile48: :smile47: :smile46: :smile45: :smile44: :smile43: :smile42: :smile41: :smile40: :smile3: :smile39: :smile38: :smile37: :smile36: :smile35: :smile34: :smile33: :smile32: :smile31: :smile30: :smile2: :smile29: :smile28: :smile27: :smile26: :smile25: :smile24: :smile23: :smile22: :smile21: :smile20: :smile1: :smile19: :smile18: :smile17: :smile16: :smile15: :smile14: :smile13: :smile12: :smile11: :smile10: :smile0: :sad: :rolleyes1: :redface: :razz: :question: :neutral: :mrgreen: :mad: :lol: :idea: :exclaim: :evil: :eek: :cry: :cool: :confused: :biggrin: :arrow:

友情链接: 程序员刘杨 刘杨
Copyright 2003~2018 保留所有权利 | 网站地图
备案号:湘ICP备14001005号-2

湘公网安备 43011102001322号