了解Oracle存储过程中的角色

乡村小伙也有样

乡村小伙也有样

2016-02-19 15:42

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享了解Oracle存储过程中的角色吧。

    角色(数据库权限集)与存储过程、函数和数据包之间的交互方式是Oracle安全模型中最难以处理的一个部分。Oracle中的对象权限可以直接或通过角色间接授予用户。

     假设一个HR用户向用户ABEL授予EMPLOYEES表的一些许可: GRANT select, insert, update, delete     这个语句直接把上述四个权限授予给用户ABEL。另一方面,假设一名HR用户这样做: GRANT select, insert, update, delete ON employees TO hr_role;     假如ABEL已被授予HR_ROLE角色,那么他现在通过这个角色就直接拥有了以上权限。

     不管使用哪种方法,现在ABEL都拥有了HR.EMPLOYEES表的SELECT权限。假如ABEL通过SELECT语句直接从表中选择数据,那么他如何获得许可并不重要。

     但是,假如ABEL试图建立从这个表中选择的存储过程、函数或数据包,那么他是直接获得许可,还是通过角色取得许可就存在很大差异。

     Oracle要求直接向用户授予一个存储过程中的非拥有对象许可。在编辑过程中角色被临时关闭,用户不能访问授予给他们的任何内容。这样做是出于性能和安全考虑。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

     角色可以通过SET ROLE命令动态激活和禁用,假如Oracle需要不断检查哪个角色和许可当前处于激活状态,则会带来巨大的治理负担。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

     下面的代码是一个更新HR雇员文件的简短存储过程(这段代码用一个同义字EMPLOYEES来代表HR.EMPLOYEES)。当ABEL在第一种情况下试图用直接权限编辑这个文件时,编辑取得成功;当他在第二种情况下仅用间接权限编辑时,编辑失败。 CREATE OR REPLACE PROCEDURE update_emp ( p_employee_id IN NUMBER ,p_salary IN NUMBER ) AS v_department_idemployees.department_id%TYPE; BEGIN SELECT department_id INTO v_department_id FROM employees WHERE employee_id = p_employee_id; UPDATE employees SET salary = p_salary WHERE employee_id = p_employee_id; IF v_department_id = 100 THEN UPDATE local_employees SET salary = p_salary WHERE employee_id = p_employee_id; END IF; END; /     有趣的是,向PUBLIC授予许可和直接授予所有用户许可相同。PUBLIC常被认为是一个角色,但它并不是一个角色。它是一个用户集而不是一个许可集。假如向PUBLIC授权HR.EMPLOYEES的许可,ABEL将能够建立他自己的存储过程。虽然在EMPLOYEES表中我们不推荐这样做,但任何授予给PUBLIC的表都可以自由地在存储过程中应用。

展开更多 50%)
分享

猜你喜欢

了解Oracle存储过程中的角色

编程语言 网络编程
了解Oracle存储过程中的角色

如何在oracle存储过程中返回游标

编程语言 网络编程
如何在oracle存储过程中返回游标

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在存储过程中实现分页

Web开发
在存储过程中实现分页

Oracle中通过存储过程中返回数据集及在Delphi中使用

编程语言 网络编程
Oracle中通过存储过程中返回数据集及在Delphi中使用

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

oracle安装过程中无法换盘

电脑网络
oracle安装过程中无法换盘

了解顺产过程中的“会阴侧切”

分娩
了解顺产过程中的“会阴侧切”

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

jQuery TextBox自动完成条

jQuery TextBox自动完成条

运用jquery实现table单双行不同显示并能单行选中

运用jquery实现table单双行不同显示并能单行选中
下拉加载更多内容 ↓