Oracle EBS R12多组织访问架构

多组织架构实现了经营单位(OU)的数据安全性,在底层数据表中有一列ORG_ID来记录数据所属的经营单一,所有多OU的基表都是以”_ALL”结尾,对应经营单位屏蔽信息的视图创建在

APPS数据库模式下。 多OU的视图通过职责上面设置的MO: Operating Unit预制文件的值来限制值的读取。预制文件的值在用户登录系统职责后通过FND来初始化,CLIENT_INFO这个功能函数来

取得ORG_ID的值,这个值在一个连接会话中有效。这样一来一个职责只能访问一个经营单位的数据。

  从Oracle Applications R12开始,使用了多组织访问控制(Multi-Org Access Control)功能,使用户在一个职责下存取一个或者多个经营单位(Operation Units)的数据。增加了用户操作的方便性和灵活性。MOAC是通过安全配置文件(Security Profile)来实现的,通过在HR模块中定义安全配置文件来包括层次结构的组织架构,然后使用MO: Security Profile 预制文件将安全

性配置文件和职责关联起来,这样就实现了用户能够访问MO: Security Profile预制文件中所对应安全配置文件中的经营单位信息。而后台则是通过数据库中的VPD(Virtual Private

Database)功能来替换CLIENT_INFO实现多OU存取数据的控制。

MOAC对用户系统操作的影响 :

所有与多OU相关的业务窗口中,都添加了一个OU选择的值列表

MOAC对客户化开发的影响:

VPD(Virtual Private Database)替换了CLIENT_INFO,因此以前的安全性访问初始化的方式已经不再适用,如R12前使用如下的代码:

begin

dbms_application_info.set_client_info(‘&org_id’);

end;

/

select * from po_headers

/ 但是在R12种已经不适用,在12版的工作流数据库包开发中使用MO_GLOBAL来实现 而在表单和报表的客户化开发中,都需要通过安全配置文件来初始化安全访问。 为了和系统标准功能保持

一致以及程序的扩展性,需要在多OU相关的界面设计中添加OU选择的值列表。

关于R12的新特性Multi-Org Access Control(MOAC).Oracle宣传的好处主要有:

1.enable users to access to secured data in one or more Operating Units from a single responsibility

  使用户能够从一个单一的责任访问一个或多个经营单位的安全数据。

2.End-Users can access/transact data within several operating units based on Security Profile attached to a responsibility.

  最终用户可以基于安全配置文件连接到责任访问/办理多个经营单位内的数据。

3.Profile 'MO:Security Profile' will ensure access to multiple operating units from single responsibility

  Profile 'MO:Security Profile'可以确保从单一的责任访问多个经营单位

具 体为什么会改成这样的原因可以从R12的宣传语看出:"The Global Business Release" "R12 Enables You To Think Globally,Work Globally,Manage Systems Globally "

从技术角度的一些拾零记录

1.在R12之前的版本中,组织控制是通过View来实现,比如说AP_INVOICES是定义在AP_INVOICES_ALL上面的View,而View一般都是通过在ORG_ID加条件来限制数据访问.

  从R12开始,这样的View被取消了,取而代之的是同义词(synonyms),比如说AP_INVOICES就是AP_INVOICES_ALL的同义词(synonyms).

  在R12里可以通过下面的SQL语句来查询有这样关系的表

  ---

  select *

  from  dba_synonyms syn

  where syn.synonym_name || '_ALL' = syn.table_name

  ---

2.R12中的组织访问限制是如何实现的呢?

  是通过数据库安全方面的新特性virtual private database (VPD) policy来实现的,具体就是给_ALL表的同义词(比如说AP_INVOICES),添加对应的Policy.

  这样在在查询的时候,数据库会根据Policy的来生成对应的条件(where)语句,来限制我们对数据的访问.

  通过select * from dba_policies where policy_name = 'ORG_SEC'我们可以查询到那些表添加了Policy,以及是通过那个具体的Function来生成要添加的where条件

  我们通过查询可以发现,比较具体的一个例子

  Policy_name: ORG_SEC

  Policy_group: SYS_DEFAULT

  Package: MO_GLOBAL

  Function: ORG_SECURITY

  通过查看MO_GLOBAL.MO_GLOBAL,我们可以看到具体的生成限制语句的逻辑.其中Multiple OU Access是通过GLOBAL TEMPORARY TABLE MO_GLOB_ORG_ACCESS_TMP来实现的.

  可以参看Note462383.1来看具体的每种情况会生成什么样的Where条件(a WHERE clause). 

3.可以通过表FND_MO_PRODUCT_INIT中的STATUS来判断具体的某个Application是否支持MOAC.

4.通过表FND_MO_SP_PREFERENCES的User_ID, Resp_ID, Security_Profile_ID可以查看缺省的组织(Default Org_ID).相关联的Profile是MO: Default OU

5.MOAC定义的步骤

  1.Define Operating Units(Optional)

  2.Define Security Profile Enter the Operating Units for which you want access

  3.Run concurrent program "Security List Maintenance Program"

  4.Assign the security profile to MO: Security Profile profile option for your responsibility or user

  5.Assign MO: Default Operating Unit(Optional)

  6.Assign MO: Operating Unit(Mandatory for only Single Org or if MO: Security Profile is not defined)

  中文:MOAC定义的步骤(对上面英文的翻译)

  1.定义组织架构及OU信息

  2.定义安全配置文件

  3.运行”Security List Maintenance Program”请求

  4.为用户职责分配”MO: Security Profile”预制文件的值为安全配置文件的定义

  5.为用户职责设置一个默认的操作OU,分配”MO: Default Operating Unit”预制文件的值

  6.如果还是希望一个职责对应一个单独的OU,设置职责层的”MO: Operating Unit”预制文件

6.MOAC在应用中初始化的基本流程

  1.MO_GLOBAL.init

  2.Set_Org_Access -- MO_GLOB_ORG_ACCESS_TMP

  3.Check FND_MO_PRODUCT_INIT

  4.If MO: Security Profile Else MO: Operating Unit

  5.Set Policy Context "A", "S", "M" and org_id

  注:这里的Policy Context的含义如下

     Restrict the data to eliminate only seed data rows is the access mode is All

     Restrict the data to a single operating unit if the access mode is Single

     Restrict the data to multiple operating units if the access mode is Multiple

     Restrict the data to not return any rows if the access mode is None

Oracle EBS R12多组织(多OU)访问架构的更多相关文章

  1. Oracle EBS R12多组织访问架构

    关于R12的新特性Multi-Org Access Control(MOAC).Oracle宣传的好处主要有:1.enable users to access to secured data in o ...

  2. Oracle EBS R12 (12.1.3) Installation Linux(64 bit)

    Oracle EBS R12 (12.1.3) Installation Linux(64 bit) Contents Objective. 3 1 Download & Unzip. 3 D ...

  3. Oracle Ebs R12 SLA与GL关系变化

    http://www.cnblogs.com/bruce_zhao/p/3809886.html Oracle Ebs R12 SLA与GL关系变化 SLA概念:SLA(Subledger Accou ...

  4. Oracle EBS R12文件系统结构(学习汇总网上资料)

    Oracle EBS R12在服务器端文件结构如下: 顶层目录下面分为 1)inst --–跟ebs整个实例(instance)相关的配置信息以及其他信息 2)  db   ---主要存储DB层的信息 ...

  5. Oracle EBS R12经验谈(二)

    作者: jianping.ni    时间: 2009-2-13 12:52     标题: Oracle EBS R12经验谈(二) OAF页面:银行帐户开户人LOV值列表无值    在输入 应付超 ...

  6. 处理Oracle EBS R12登录首页跳转出现unexpected error问题(转)

    原文地址: 处理Oracle EBS R12登录首页跳转出现unexpected error问题 经上网搜索,造成此问题的问题有很多,如内存不足.系统参数配置不当.程序代码.系统表空间不足等原因.查询 ...

  7. Oracle EBS R12 客户表结构

    参考链接: Oracle EBS R12 客户表结构 Oracle EBS中的“客户”."客户地点".‘订单’之间的关系 Oracle EBS中的“客户”."客户地点&q ...

  8. Oracle EBS APP-FND-02938 多组织例程初始化产品报错

    Oralce EBS R12中引入了MOAC的控制,所有多OU的表对象都添加了数据库VPD的控制策略,需要访问这些对象中的数据,首先需要进行多组织环境的初始化,但是如果客户化的应用中也需要具备多OU的 ...

  9. ORACLE EBS R12 FOR LINUX 开机后如何启动数据库、应用脚本[Z]

    在Linux中安裝EBS  R12後, EBS關閉與啟動的程序為: 1. 關閉EBS - 先關閉Applications Server $ cd /d01/oracle/VIS/inst/apps/V ...

随机推荐

  1. HTTP 协议详解(超级经典)-转

    什么是HTTP协议 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端 ...

  2. java线程与进程

    Java线程与进程 进程与线程的关系 进程里面至少有一个线程,进程间的切换会有较大的开销 线程必须依附在进程上,同一进程共享代码和数据空间 多线程的优势 多线程可以达到高效并充分利用cpu 线程使用的 ...

  3. JavaScript中的类

          JavaScript类的相关知识 1.例子 /* 例1 */// 定义一个构造函数function Range(from, to){ this.from = from; this.to = ...

  4. DecimalFormat(用于格式化十进制数字)

    1概念: DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字.该类设计有各种功能,使其能够分析和格式化任意语言环境中的数,包括对西方语言.阿拉伯语和印度语数 ...

  5. 关于一些基础的Java问题的解答(六)

    26. ThreadPool用法与优势 ThreadPool即线程池,它是JDK1.5引入的Concurrent包中用于处理并发编程的工具.使用线程池有如下好处: 降低资源消耗:通过重复利用已创建的线 ...

  6. 46. Permutations(medium, backtrack, 重要)

    Given a collection of distinct numbers, return all possible permutations. For example, [1,2,3] have ...

  7. C++ 实现俄罗斯方块

    C++ 实现俄罗斯方块 一.实验介绍 1.1 实验内容 本节实验我们进行设计俄罗斯方块前的思路分析,以及介绍ncurses 库的使用方法. 1.2 实验知识点 C++ 编程基础 ncurses 库的使 ...

  8. LintCode题解之斐波纳契数列

    直接使用递归的方法会导致TLE,加个缓存就好了: public class Solution { private Integer[] buff = new Integer[1000]; /* * @p ...

  9. Android 性能优化(一)内存篇

    欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/54377370 本文出自:[余志强的博客] 本博客同时也发布在 Hoo ...

  10. Openstack:Instance cannot ping by domain name

    Issue: When you created an instance inside Openstack, you may find that you cannot ping address by d ...