2014-05-30 Created By BaoXinjian


之前一直存在对Oracle R12 多组织访问的一些疑惑,所以查询了一些相关资料,并介绍实现R12 MOAC的Oracle VPD技术

Oracle VPD全称Virtual Private Database, Oracle的一种控制数据访问的其中安全策略之一

Oracle数据安全策略访问实现方法

  • Role-based security

    • create role cust_role;
    • grant select on customer to cust_role;
    • grant select, update on orders to cust_role;
    • grant cust_role to scott;
  • Grant-execute security
    • grant execute on procedure to cust_role;
  • Virtual private databases
    • 以下为详细介绍


例如, ap_invoices_all 和  ap_inovices访问的区别

当没有初始化mo_global.set_policy_context之前,ap_invoices_all 是可以访问所有的数据, 而ap_invoices是没有任何数据返回的

当初始化mo_global.set_policy_context之后,ap_invoices_all 还是可以访问所有的数据, 而ap_invoices可以返回对应组织的记录,而其他组织的记录并没有被返回

原因是,在视图ap_invoices添加了一个安全性策略, mo_golbal.org_security

所以在仿照标准的MOAC功能建立对客制化表的多组织访问,可以参考以上例子

建立一个基表(bxj_vpd_invoices_b), 用以存放所有数据,不管有没有通过mo_global初始化session都可以返回数据, 类似于基表ap_invoices_all的功能

建立一个视图(bxj_vpd_invoices_v), 此视图建立在基表之上,再进行添加安全性策略,实现多组织访问,类似于视图ap_invoices的功能

Step1. 建立基表

CREATE TABLE bxj_vpd_invoices_b(

invoice_id NUMBER,

invoice_num VARCHAR(100),

invoice_description VARCHAR(240),

org_id NUMBER

)

Step2. 建立视图

CREATE VIEW bxj_vpd_invoices_v AS

SELECT invoice_id, invoice_num, invoice_description, org_id

FROM bxj_vpd_invoices_b;

Step3. 准备测试资料,一笔的org为204, 一笔的org为889

INSERT INTO bxj_vpd_invoices_b VALUES (1, 'BXJ_20140520_01','BXJ_VPD_Show_With ORG204', 204)

INSERT INTO bxj_vpd_invoices_b VALUES (2, 'BXJ_20140520_02','BXJ_VPD_Show_With ORG889', 889)

Step4. 查询基表和视图都是可以返回所有两条记录

Step5. 最关键的一步,对客制化视图bxj_vpd_invoics_v添加安全性策略dbms_rls.add_policy

Step6. 产看安全性策略是否建立成功

Test1. 策略建立成功,进行测试,直接select table bxj_vpd_invoics_v, 查询未返回任何结果

Test2. 对session进行初始化

Test3. 再次直接select table bxj_vpd_invoics_v,查询只返回一条ORG204的记录,而ORG889的记录则并没显示,实现了对客制化表的多组织访问


需求: 对数据表bxj_invoice_total不显示invoice total > 1000的记录

Step1.创 建一个简单的表,并准备4笔测试数据

Step2. 查看原始数据,有4笔资料

Step3.最关键的一步,建立VPD Function,系统返回以下字段,作为VPD策略,其实个人感觉就是根据不同的条件和环境去区分所要加的条件组合,来实现数据的访问控制

Step4. 通过API dbms_rls.add_policy付给VPD策略

Step5. 检查VPD策略是否赋值成功

Test1. 直接查询已加入客制化VPD策略的表,已按VPD策略,只显示金额小于1000的记录

Thanks and Regards

SYS_R12 MOAC多组织底层技术实现技术分析(Oracle VPD) (案例)的更多相关文章

  1. SYS_R12 MOAC多组织的四个应用(案例)

    2014-05-31 Created By BaoXinjian

  2. PLSQL_R12 MOAC多组织的四个应用(案例)

    一.摘要 R12 Form 或者其他二次开发时,很多情况下会涉及R12 MOAC多组织开发,以下介绍了4个常见的应用,如有遗漏还请学友继续补充 1. 开发时打开Form自动弹出组织选择实现方式(增加C ...

  3. 《大型网站技术架构:核心原理与案例分析》【PDF】下载

    <大型网站技术架构:核心原理与案例分析>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062557 内容简介 本书通过梳理大型网站 ...

  4. 20151028整理罗列某种开发所包括对技术(技术栈),“较为全面”地表述各种技术大系的图表:系统开发技术栈图、Web前端技术栈图、数据库技术栈图、.NET技术栈图

    ———————————— 我的软件开发生涯 (10年开发经验总结和爆栈人生) 爆栈人生 现在流行说全栈.每种开发都有其相关的技术.您是否觉得难以罗列某种开发所包括对技术(技术栈)呢?   您是否想过: ...

  5. Azure底层架构的初步分析

    之所以要写这样的一篇博文的目的是对于大多数搞IT的人来说,一般都会对这个topic很感兴趣,因为底层架构直接关乎到一个公有云平台的performance,其实最主要的原因是我们的客户对此也非常感兴趣, ...

  6. 图解Janusgraph系列-图数据底层序列化源码分析(Data Serialize)

    图解Janusgraph系列-图数据底层序列化源码分析(Data Serialize) 大家好,我是洋仔,JanusGraph图解系列文章,实时更新~ 图数据库文章总目录: 整理所有图相关文章,请移步 ...

  7. Docker 介绍以及其相关术语、底层原理和技术

    https://ruby-china.org/topics/22004 Docker是啥 Docker是一个程序运行.测试.交付的开放平台,Docker被设计为能够使你快速地交付应用.在Docker中 ...

  8. iOS底层音频处理技术(带源代码)

    本文由论坛会员artgolff分享 前几天搜索资料时发现一个网站: iPhone Core Audio Development ,里面有iOS底层 音频 技术的几个源 代码 ,如果你要实现VoIP电话 ...

  9. Web---myAjax(自己写底层)-隐藏帧技术

    讲解网站一般都有的一个功能,就是注册时候的,实现验证用户名是否存在的功能. 源代码演示: reg.jsp: <%@ page language="java" import=& ...

随机推荐

  1. C#中三种定时器对象的比较 【转】

    https://www.cnblogs.com/zxtceq/p/5667281.html C#中三种定时器对象的比较 ·关于C#中timer类 在C#里关于定时器类就有3个1.定义在System.W ...

  2. 10 款基于 jQuery 的切换效果插件推荐

    本文整理了 10 款非常好用的 jQuery 切换效果插件,包括平滑切换和重叠动画等,这些插件可以实现不同元素之间的动态切换. 1. InnerFade 这是一个基于 jQuery 的小插件,可以实现 ...

  3. nginx配置解决vue单页面打包文件大,首次加载慢的问题

    cnpm run build 文件过大,其中主要是vender.js有1.5M,代码部署到服务器,首次访问加载页面时比较慢,耗时6.5s左右,所以需要优化下. 1.Nginx开启gzip 找到ngin ...

  4. 浅谈Jquery中的bind()、live()、delegate()、on()绑定事件方式

    一.on(),live(),bind() on() 为指定的元素,添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数.使用 on() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建 ...

  5. Oracle Agile PLM Web Services 的实现

    Oracle 的产品Agile PLM内置了许多Web Services,其他系统可以通过Web Servcies实现对Agile PLM系统资源的访问.快速学会使用的方法,是去Oracle的官网下载 ...

  6. [Node.js]22. Level 4: Dependency

    Add two dependencies to your package.json file, connect and underscore. You'll want to useconnect ve ...

  7. 12款程序员们最爱的Bootstrap模板

    如果你还没有开始使用Bootstrap模板,那你可真是有够OUT,这是一个帮助你快速开发的工具,Bootstrap是基于jQuery框架开发的,它在jQuery框架的基础上进行了更为个性化和人性化的完 ...

  8. 云端软件平台 封装了诺基亚PC套件无法找到驱动怎么办

    1 在设备管理器中可以看到你的手机驱动器位感叹号. 2 右键→更新驱动程序→从列表指定位置安装→搜索位置选择C:\ProgramFiles\Nokia\ConnectivityCableDriver ...

  9. git命令 add -a和add .和add -u 的区别

    总结: git add -a 所有的更改操作--新建,更改,删除: git add . 只包括 新建 ,修改操作:无删除: git add -u 只包括修改,删除操作,无新建: 示例: git ini ...

  10. 在网页浏览器中原生显示PDF文件

    在网页中直接显示pdf格式的文件方便阅读.但是如果文件较大加载速度会很慢,另外如果客户端没有安装pdf阅读插件的话,也就看不了了. 这种方式的好处就是不需要转换,直接显示,而且在加载时(高级的浏览器, ...