oracle ebs 多组织屏蔽的研究
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 多组织屏蔽的研究相关推荐
- ORACLE EBS中OAF屏蔽的错误
ORACLE EBS R12中引入了XML Publisher,Oracle Application Framework等新东西,利用网页/JSP技术增强Form/Report等的功能和表现力. 当运 ...
- Oracle EBS财务模块(一)基本功能
一.传统的财务系统业务流程概况 传统的财务系统的业务流程是以会计业务为基础的.主要是用货币计价并按照会计准则和制度,通过记账.算账和报账等工作,向外部用户包括政府部门.投资者.债权人以及其他各个方面提 ...
- ORACLE EBS
第一篇介绍了ERP软件是供应链管理软件.告诉你这个软件改善或提升企业管理的切入点和着力点.有了着力点才能给力. 第二篇介绍了什么是咨询以及咨询工作共通的章法,告诉了你咨询的套路是什么,就像练习一套拳, ...
- Oracle EBS 11i 表结构
BOM模块常用表结构 表名: bom.bom_bill_of_materials 说明: BOM清单父项目 BILL_SEQUENCE_ID NUMBER 清单序号(关键字) ASSEMB ...
- oracle ebs 笔记
查找在菜单里提交的报表所在职责 select a.responsibility_name, b.prompt, f.user_concurrent_program_name ...
- ebs r12多少钱 实施oracle_如何制定Oracle EBS R12升级检查清单
[IT168 技术]我应该从哪里开始执行Oracle电子商务套件(E-Business Suite,EBS)R12的升级?如何才能实现最高效的升级? 对于初次执行这个过程的人而言,我们需要在规划阶段理 ...
- Oracle EBS渗透测试工具
ERP安全是IT安全的独立部分.如今,ERP代表了各种基于不同技术编写的各种工具和服务.在安全领域拥有适当的知识和便于管理的工具是至关重要的. 当我们在探索Oracle电子商务套件安全性时,我们注意到 ...
- Oracle ebs(E-Business Suite) 电子商务套件 简介
目录 简介 系统结构 基础概念 简介 OracleOracle E-Business Suite是一个允许组织或公司来管理关键业务流程的软件包,它包括比较常见的 Oracle 企业资源规划(ERP), ...
- oracle ebs hr模块表,oracle ebs常用表结构及分类模块.doc
oracle ebs常用表结构及分类模块 Oracle application 表结构 表结构,WHO字段来实现 通过菜单HELP 下的HISTORY 来找表 2. 通过LAST_QUERY来判断所使 ...
最新文章
- Docker实战9 之Dockerfile深入实践
- python 中 if __name__ == '__main__' 判断的作用
- 如何隐藏 Safari 中 input 标签的 autofill 图标
- date数据存入mysql_Date对象存入mysql数据库
- c语言文件读写_学生信息管理系统(C语言\单向链表\文件读写)
- 每天进步一点点《ML - 感知机》
- 基于JAVA+SpringMVC+Mybatis+MYSQL的实验室设备管理系统
- 如何设计沉浸式游戏引导界面?你要知道的七大点
- GPIO的8种工作模式
- 阿里云服务器需要备案吗?
- 小程序加入人脸识别_微信小程序怎么实现人脸识别
- linux 编译cgal,Linux环境下CGAL配置
- 数据结构线性表(C++ )
- MySQL said: Authentication plugin ‘caching_sha2_password‘ cannot be loaded... 阿星小栈
- HP刀片服务器系统Flex,HP刀片服务器系统Flex-10 VC配置与VMware vSphere网络设计
- Latex——数学符号大全
- 旁观OpenGL里的透视投影矩阵
- 纯Web前端打造的元宇宙展厅——开箱即用的Lingo3D游戏引擎 支持原生、React、Vue
- actuator微服务信息完善
- 计算机房排风系统,机房新风系统介绍
热门文章
- android:inputtype有哪些类型,android:inputType参数类型说明
- 计算同比 环比_PowerBI学习教程(三)时间累积同比环比计算
- mysql中如何求字段的个数字_求高手帮小弟解决一下!关于mysql字段中数字提取求和的问题?...
- C/S和B/S两种架构区别与优缺点分析
- D3.js比例尺 定量比例尺 之 线性比例尺(v3版本)
- 微信授权(Net Mvc)
- java 基础--NIO(4)
- BZOJ3230 相似子串 字符串 SA ST表
- css实现倒8字效果
- 常用前端框架Angular和React的一些认识