1.1 具有OU屏蔽的表例子

SELECT t.org_id, t.*  FROM po.po_headers_all t  --无屏蔽表,在PL/SQL运行有数据
SELECT t.org_id, t.*  FROM apps.po_headers t     --包含OU屏蔽,在PL/SQL中查询无数据

1.2 多组织屏蔽原理

a. 在PO Schema 上创建一张表, 命名为 PO_HEADERS_ALL
b. 在APPS schema 上创建一个同义字(synonym) PO_HEADERS_ALL , 指向 PO.PO_HEADERS_ALL
c. 在APPS 中别一个同义字(synonym) 被创建: PO_HEADERS, 指向 PO_HEADERS_ALL
d. 通过使用 MO_GLOBAL.ORG_SECURITY, 行级别的安全被应用于 PO_HEADERS.
这个可以通过运行 SQL select * from all_policies where object_name='PO_HEADERS' 来再次确认
e. 这个策略的影响是无论何时当你访问 PO_HEADERS 时, Oracle RLS 会动态的扩展WHERE 条件语句,如
SELECT * FROM PO_HEADERS WHERE EXISTS (SELECT 1 FROM mo_glob_org_access_tmp oa WHERE oa.organization_id = org_id)

1.3 通过模拟登录使apps.po_headers在PL/SQL中可以查询到数据

BEGINfnd_global.apps_initialize(user_id => 1433, resp_id => 50691,resp_appl_id => 222);mo_global.init('M');
END;

其中apps_initialize参数可以通过如下步骤获取值:

1.帮助->诊断->检查

2.“块”中填写值:$PROFILES$

3.在字段里分别填写:user_id、resp_id、resp_appl_id获取值

4.模拟登录完以后,就可以在PL/SQL中运行查询语句

SELECT t.org_id, t.*  FROM apps.po_headers t     --模拟登录以后,查询包含数据

1.4 mo_glob_org_access_tmp 表介绍

a. 通过第二点我们知道:当你访问 PO_HEADERS 时, Oracle RLS 会动态的扩展WHERE 条件语句,如:

SELECT *FROM po_headersWHERE EXISTS (SELECT 1FROM mo_glob_org_access_tmp oaWHERE oa.organization_id = org_id)

a. 在没有运行模拟登录前查询表mo_glob_org_access_tmp,为空值。这时WHERE语句为假,所以我们直接查询po_headers会发现找不到任何数据。

b. 运行模拟登录以后,再次查询表mo_glob_org_access_tmp,得到如下查询结果:

a. 这时重新查询po_headers,发现可以找到数据了。通过数据分析发现找到的数据和允许查询的数据时一致的:

a. 所以我们可以得出结论:当运行“模拟登录”的时候,系统会插入允许访问的ORG_ID到数据库表mo_glob_org_access_tmp里。当查询包含OU屏蔽的表时,系统自动判断当前session的mo_glob_org_access_tmp表允许查询出的ORG_ID,所以我们就可以访问这些org_id的数据了。

a. 当我们从表mo_glob_org_access_tmp删除一条数据,例如删除第一条数据:81 OU_AWL时,重新查询po_headers表,发现得到如下数据:

a. 当我们重新打开一个session,在没有模拟登录的情况下,我们直接插入ORG_ID到表mo_glob_org_access_tmp中时,重新查询表po_headers,发现也是可以得到数据的。所以我们可以得出以下结论

当你访问 PO_HEADERS 时, Oracle RLS 会动态的扩展WHERE 条件语句

SELECT *FROM po_headersWHERE EXISTS (SELECT 1FROM mo_glob_org_access_tmp oaWHERE oa.organization_id = org_id)
a.
当在你session中的Multi Org初始化之后, 表 mo_glob_org_access_tmp 中, 你的 session 会有 X 条记录 . X 表示的是被赋予 MO Security Profile 的组织机构的数量。

1.5 mo_global.init 的目的

它会通过检查是否新的Multi Org Security Profile被设置来决定是否有新的  Security Profile 方法被使用.

如果设置了新的MO security profile, 那么 mo_global.init 会为在 Org Hierarchy 中的每个组织机构插入一条新的记录到表  mo_glob_org_access_tmp 中。

这个方法会在你登录后或者是切换职责后立即被调用. 就像FND_GLOBAL.INITIALIZE 被调用一样, 可以安全的确定 Oracle 会在 FND_GLOBAL.INITIALIZE 之后调用 MO_GLOBAL.INIT

1.6 MO_GLOBAL.SET_POLICY_CONTEXT('S',101)作用

ORG_ID 101 会被赋予你当前的session.

在其内部, 当你对你的单个org设置上下文(Context)时,这段的代码将会被执行: dbms_session.set_context('multi_org2', 'current_org_id', 101);

转载于:https://blog.51cto.com/snans/1352377

oracle ebs 多组织屏蔽的研究相关推荐

  1. ORACLE EBS中OAF屏蔽的错误

    ORACLE EBS R12中引入了XML Publisher,Oracle Application Framework等新东西,利用网页/JSP技术增强Form/Report等的功能和表现力. 当运 ...

  2. Oracle EBS财务模块(一)基本功能

    一.传统的财务系统业务流程概况 传统的财务系统的业务流程是以会计业务为基础的.主要是用货币计价并按照会计准则和制度,通过记账.算账和报账等工作,向外部用户包括政府部门.投资者.债权人以及其他各个方面提 ...

  3. ORACLE EBS

    第一篇介绍了ERP软件是供应链管理软件.告诉你这个软件改善或提升企业管理的切入点和着力点.有了着力点才能给力. 第二篇介绍了什么是咨询以及咨询工作共通的章法,告诉了你咨询的套路是什么,就像练习一套拳, ...

  4. Oracle EBS 11i 表结构

    BOM模块常用表结构   表名: bom.bom_bill_of_materials   说明: BOM清单父项目   BILL_SEQUENCE_ID NUMBER 清单序号(关键字) ASSEMB ...

  5. oracle ebs 笔记

    查找在菜单里提交的报表所在职责 select a.responsibility_name,        b.prompt,        f.user_concurrent_program_name ...

  6. ebs r12多少钱 实施oracle_如何制定Oracle EBS R12升级检查清单

    [IT168 技术]我应该从哪里开始执行Oracle电子商务套件(E-Business Suite,EBS)R12的升级?如何才能实现最高效的升级? 对于初次执行这个过程的人而言,我们需要在规划阶段理 ...

  7. Oracle EBS渗透测试工具

    ERP安全是IT安全的独立部分.如今,ERP代表了各种基于不同技术编写的各种工具和服务.在安全领域拥有适当的知识和便于管理的工具是至关重要的. 当我们在探索Oracle电子商务套件安全性时,我们注意到 ...

  8. Oracle ebs(E-Business Suite) 电子商务套件 简介

    目录 简介 系统结构 基础概念 简介 OracleOracle E-Business Suite是一个允许组织或公司来管理关键业务流程的软件包,它包括比较常见的 Oracle 企业资源规划(ERP), ...

  9. oracle ebs hr模块表,oracle ebs常用表结构及分类模块.doc

    oracle ebs常用表结构及分类模块 Oracle application 表结构 表结构,WHO字段来实现 通过菜单HELP 下的HISTORY 来找表 2. 通过LAST_QUERY来判断所使 ...

最新文章

  1. Docker实战9 之Dockerfile深入实践
  2. python 中 if __name__ == '__main__' 判断的作用
  3. 如何隐藏 Safari 中 input 标签的 autofill 图标
  4. date数据存入mysql_Date对象存入mysql数据库
  5. c语言文件读写_学生信息管理系统(C语言\单向链表\文件读写)
  6. 每天进步一点点《ML - 感知机》
  7. 基于JAVA+SpringMVC+Mybatis+MYSQL的实验室设备管理系统
  8. 如何设计沉浸式游戏引导界面?你要知道的七大点
  9. GPIO的8种工作模式
  10. 阿里云服务器需要备案吗?
  11. 小程序加入人脸识别_微信小程序怎么实现人脸识别
  12. linux 编译cgal,Linux环境下CGAL配置
  13. 数据结构线性表(C++ )
  14. MySQL said: Authentication plugin ‘caching_sha2_password‘ cannot be loaded... 阿星小栈
  15. HP刀片服务器系统Flex,HP刀片服务器系统Flex-10 VC配置与VMware vSphere网络设计
  16. Latex——数学符号大全
  17. 旁观OpenGL里的透视投影矩阵
  18. 纯Web前端打造的元宇宙展厅——开箱即用的Lingo3D游戏引擎 支持原生、React、Vue
  19. actuator微服务信息完善
  20. 计算机房排风系统,机房新风系统介绍

热门文章

  1. android:inputtype有哪些类型,android:inputType参数类型说明
  2. 计算同比 环比_PowerBI学习教程(三)时间累积同比环比计算
  3. mysql中如何求字段的个数字_求高手帮小弟解决一下!关于mysql字段中数字提取求和的问题?...
  4. C/S和B/S两种架构区别与优缺点分析
  5. D3.js比例尺 定量比例尺 之 线性比例尺(v3版本)
  6. 微信授权(Net Mvc)
  7. java 基础--NIO(4)
  8. BZOJ3230 相似子串 字符串 SA ST表
  9. css实现倒8字效果
  10. 常用前端框架Angular和React的一些认识