溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么深入研究EBS MOAC

發(fā)布時(shí)間:2021-11-05 16:15:32 來(lái)源:億速云 閱讀:162 作者:柒染 欄目:建站服務(wù)器

本篇文章為大家展示了怎么深入研究EBS MOAC,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

我希望你已經(jīng)讀了文章 EBS R12 中的 Multi Org . 當(dāng)我們?cè)谒伎糝12中的 Multi Org 時(shí),總有一些問(wèn)題會(huì)出現(xiàn)在腦海中, 對(duì)這些問(wèn)題最好的分析就是打開(kāi)包 MO_GLOBAL,別擔(dān)心你還沒(méi)有裝R12,  MO_GLOBAL在11.5.10 就已經(jīng)有了, 現(xiàn)在讓我們開(kāi)始吧. 

在R12中,CLIENT_INFO是如何被替換的呢? 
我們先來(lái)舉個(gè)例子.
在R12之前的版本, 你通過(guò)以下方法來(lái)創(chuàng)建表 PO_HEADERS_ALL
a. 在PO Schema 上創(chuàng)建一張表, 命名為 PO_HEADERS_ALL
b. 在APPS schema 上創(chuàng)建一個(gè)同義字(synonym) PO_HEADERS_ALL , 指向 PO.PO_HEADERS_ALL
c. 在APPS schema 上創(chuàng)建視圖PO_HEADERS: "select * from po_headers_all where org_id=client_info"

但是在R12中,下面的事情將會(huì)發(fā)生:
a. 在PO Schema 上創(chuàng)建一張表, 命名為 PO_HEADERS_ALL
b. 在APPS schema 上創(chuàng)建一個(gè)同義字(synonym) PO_HEADERS_ALL , 指向 PO.PO_HEADERS_ALL
c. 在APPS 中別一個(gè)同義字(synonym) 被創(chuàng)建: PO_HEADERS, 指向 PO_HEADERS_ALL
d. 通過(guò)使用 MO_GLOBAL.ORG_SECURITY, 行級(jí)別的安全被應(yīng)用于 PO_HEADERS.
這個(gè)可以通過(guò)運(yùn)行 SQL select * from all_policies where object_name='PO_HEADERS' 來(lái)再次確認(rèn)
e. 這個(gè)策略的影響是無(wú)論何時(shí)當(dāng)你訪問(wèn) PO_HEADERS 時(shí), Oracle RLS 會(huì)動(dòng)態(tài)的擴(kuò)展WHERE 條件語(yǔ)句,如
SELECT * FROM PO_HEADERS WHERE EXISTS (SELECT 1 FROM mo_glob_org_access_tmp oa WHERE oa.organization_id = org_id) 
也請(qǐng)參考下面的 **** .

是否這就意味著,如果我創(chuàng)建一張新的客制化的表,我就要把RLS [ Row Level Security ] 應(yīng)用在這張表上?
是的沒(méi)錯(cuò), 如果這張表包含著以O(shè)RG_ID來(lái)區(qū)分的數(shù)據(jù), 那就應(yīng)該這樣. 在這個(gè)例子中你所要做的就是將包里的功能MO_GLOBAL.ORG_SECURITY 賦予那些 表/同義字/視圖.


Multi Org 的RLS[Row Level security]是否也會(huì)被應(yīng)用在 表/同義字/視圖 上呢?
理論上是這樣的, RLS 能被應(yīng)用在以上的任意一個(gè)對(duì)象中, 但是在實(shí)踐中,你只會(huì)將 RLS 應(yīng)用在 APPS Schema 中的對(duì)象, 這意味著, 你最有可能的就是把RLS應(yīng)用在同義字上. 基本上, 現(xiàn)在Multi Org 視圖已經(jīng)被受 RLS 保護(hù)的同義字替換, 但是, 當(dāng)訪問(wèn)R12之前版本的Multi-Org安全視圖時(shí), 我們不需要修改現(xiàn)有的代碼. 現(xiàn)在, 根據(jù)ORG_ID來(lái)實(shí)現(xiàn)數(shù)據(jù)安全訪問(wèn)的職責(zé)依賴于RLS[也被叫作 VPD - Virtual Private Database].


我已經(jīng)對(duì)我的 Multi Org Security Profile 做了些改變, 方式是通過(guò)附加一個(gè)新的Org層次, 我還需要運(yùn)行其它的程序嗎?

就像我們?cè)贖RMS中所做的一樣, 所建議的是在Security Profiles上做任何改變后, 都運(yùn)行程序 "Security List Maintenance"


什么是MO_GLOBAL.INIT
mo_global.init 的目的 :-
它會(huì)通過(guò)檢查是否新的Multi Org Security Profile被設(shè)置來(lái)決定是否有新的  Security Profile 方法被使用.
如果設(shè)置了新的MO security profile, 那么 mo_global.init 會(huì)為在 Org Hierarchy 中的每個(gè)組織機(jī)構(gòu)插入一條新的記錄到表  mo_glob_org_access_tmp 中

mo_global.init 是在何時(shí)何地被調(diào)用的 ?
這個(gè)方法會(huì)在你登錄后或者是切換職責(zé)后立即被調(diào)用. 就像FND_GLOBAL.INITIALIZE 被調(diào)用一樣, 可以安全的確定 Oracle 會(huì)在 FND_GLOBAL.INITIALIZE 之后調(diào)用 MO_GLOBAL.INIT


mo_glob_org_access_tmp 是一張全局臨時(shí)表(global temporary table)嗎?
是的, 當(dāng)在你session中的Multi Org初始化之后, 表 mo_glob_org_access_tmp 中, 你的 session 會(huì)有 X 條記錄 . X 表示的是被賦予 MO Security Profile 的組織機(jī)構(gòu)的數(shù)量 [在 security profile 中查看組織層次或者組織列表]


MO_GLOBAL.ORG_SECURITY 的目的是什么 ?
Row-Level-Security 的目的是隱藏某些數(shù)據(jù)[基于一些條件]. RLS 是通過(guò)擴(kuò)展安全對(duì)象上的where條件語(yǔ)句來(lái)實(shí)現(xiàn)的.
1. MO_GLOBAL.ORG_SECURITY 的功能是返回WHERE條件語(yǔ)句
2. 這個(gè)where 條件語(yǔ)句會(huì)被擴(kuò)展到那些已經(jīng)啟用Multi Org行級(jí)別安全的 表/同義字/視圖 中


MO_GLOBAL.SET_POLICY_CONTEXT 的目的是什么?
這個(gè) procedure 有兩個(gè)參數(shù)
    p_access_mode
          當(dāng)你想讓你當(dāng)前的session只會(huì)對(duì)一個(gè)ORG_ID工作時(shí), 輸入"S"
          當(dāng)你想讓你當(dāng)前的session只會(huì)對(duì)多個(gè)ORG_ID工作時(shí), 輸入"M"
    p_org_id
          只有當(dāng)p_access_mode的值是"S"時(shí)才需要


在SQL*Plus中,我想對(duì)一個(gè)指定的Org[單個(gè)Org]設(shè)置session, 在R12中我該如何做呢?
SQL>> exec MO_GLOBAL.SET_POLICY_CONTEXT('S',101);
在上面的例子中, ORG_ID 101 會(huì)被賦予你當(dāng)前的session.
在其內(nèi)部, 當(dāng)你對(duì)你的單個(gè)org設(shè)置上下文(Context)時(shí),這段 藍(lán)色 的代碼將會(huì)被執(zhí)行: dbms_session.set_context('multi_org2', 'current_org_id', 101);


**** 如果當(dāng)前的數(shù)據(jù)庫(kù)session被初始化為單個(gè)Org[如上面的步驟], 那么在行級(jí)別安全(Row-Level-Security)上擴(kuò)展到對(duì)象的 Where 語(yǔ)句就會(huì)是
WHERE org_id = sys_context('multi_org2','current_org_id')


為什么我作為一個(gè)應(yīng)用程序技術(shù)人員會(huì)使用 MO_GLOBAL.SET_POLICY_CONTEXT 呢?

我們假設(shè)你想在ORG_ID為101下通過(guò)調(diào)用API來(lái)創(chuàng)建invoice, 但是這個(gè)API又沒(méi)有Org_id的參數(shù),那么你可以這樣做:

a. e執(zhí)行 MO_GLOBAL.SET_POLICY_CONTEXT('S',101)
b. 調(diào)用 Invoice API, 這將會(huì)在其內(nèi)部從當(dāng)前的MO上下文(Context)中讀取ORG_ID.


在SQL*Plus中,我想模擬一次登錄到指定的職責(zé)上,我該如何做?
a. 調(diào)用 FND_GLOBAL.INITIALIZE
這將會(huì)設(shè)置你的職責(zé)ID,用戶ID等等(responsibility id, user_id)
b. 調(diào)用 MO_GLOBAL.INIT

這將會(huì)你的的職責(zé)/用戶中讀取 MO配置選項(xiàng)的值,并且初始化多組織訪問(wèn)(Multi Org Access).

上述內(nèi)容就是怎么深入研究EBS MOAC,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI