本篇文章為大家展示了怎么深入研究EBS MOAC,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)公司是專業(yè)的澄海網(wǎng)站建設(shè)公司,澄海接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行澄海網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
我希望你已經(jīng)讀了文章 EBS R12 中的 Multi Org . 當我們在思考R12中的 Multi Org 時,總有一些問題會出現(xiàn)在腦海中, 對這些問題最好的分析就是打開包 MO_GLOBAL,別擔心你還沒有裝R12, MO_GLOBAL在11.5.10 就已經(jīng)有了, 現(xiàn)在讓我們開始吧.
在R12中,CLIENT_INFO是如何被替換的呢?
我們先來舉個例子.
在R12之前的版本, 你通過以下方法來創(chuàng)建表 PO_HEADERS_ALL
a. 在PO Schema 上創(chuàng)建一張表, 命名為 PO_HEADERS_ALL
b. 在APPS schema 上創(chuàng)建一個同義字(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中,下面的事情將會發(fā)生:
a. 在PO Schema 上創(chuàng)建一張表, 命名為 PO_HEADERS_ALL
b. 在APPS schema 上創(chuàng)建一個同義字(synonym) PO_HEADERS_ALL , 指向 PO.PO_HEADERS_ALL
c. 在APPS 中別一個同義字(synonym) 被創(chuàng)建: PO_HEADERS, 指向 PO_HEADERS_ALL
d. 通過使用 MO_GLOBAL.ORG_SECURITY, 行級別的安全被應(yīng)用于 PO_HEADERS.
這個可以通過運行 SQL select * from all_policies where object_name='PO_HEADERS' 來再次確認
e. 這個策略的影響是無論何時當你訪問 PO_HEADERS 時, Oracle RLS 會動態(tài)的擴展WHERE 條件語句,如
SELECT * FROM PO_HEADERS WHERE EXISTS (SELECT 1 FROM mo_glob_org_access_tmp oa WHERE oa.organization_id = org_id)
也請參考下面的 **** .
是否這就意味著,如果我創(chuàng)建一張新的客制化的表,我就要把RLS [ Row Level Security ] 應(yīng)用在這張表上?
是的沒錯, 如果這張表包含著以O(shè)RG_ID來區(qū)分的數(shù)據(jù), 那就應(yīng)該這樣. 在這個例子中你所要做的就是將包里的功能MO_GLOBAL.ORG_SECURITY 賦予那些 表/同義字/視圖.
Multi Org 的RLS[Row Level security]是否也會被應(yīng)用在 表/同義字/視圖 上呢?
理論上是這樣的, RLS 能被應(yīng)用在以上的任意一個對象中, 但是在實踐中,你只會將 RLS 應(yīng)用在 APPS Schema 中的對象, 這意味著, 你最有可能的就是把RLS應(yīng)用在同義字上. 基本上, 現(xiàn)在Multi Org 視圖已經(jīng)被受 RLS 保護的同義字替換, 但是, 當訪問R12之前版本的Multi-Org安全視圖時, 我們不需要修改現(xiàn)有的代碼. 現(xiàn)在, 根據(jù)ORG_ID來實現(xiàn)數(shù)據(jù)安全訪問的職責依賴于RLS[也被叫作 VPD - Virtual Private Database].
我已經(jīng)對我的 Multi Org Security Profile 做了些改變, 方式是通過附加一個新的Org層次, 我還需要運行其它的程序嗎?
就像我們在HRMS中所做的一樣, 所建議的是在Security Profiles上做任何改變后, 都運行程序 "Security List Maintenance"
什么是MO_GLOBAL.INIT
mo_global.init 的目的 :-
它會通過檢查是否新的Multi Org Security Profile被設(shè)置來決定是否有新的 Security Profile 方法被使用.
如果設(shè)置了新的MO security profile, 那么 mo_global.init 會為在 Org Hierarchy 中的每個組織機構(gòu)插入一條新的記錄到表 mo_glob_org_access_tmp 中
mo_global.init 是在何時何地被調(diào)用的 ?
這個方法會在你登錄后或者是切換職責后立即被調(diào)用. 就像FND_GLOBAL.INITIALIZE 被調(diào)用一樣, 可以安全的確定 Oracle 會在 FND_GLOBAL.INITIALIZE 之后調(diào)用 MO_GLOBAL.INIT
mo_glob_org_access_tmp 是一張全局臨時表(global temporary table)嗎?
是的, 當在你session中的Multi Org初始化之后, 表 mo_glob_org_access_tmp 中, 你的 session 會有 X 條記錄 . X 表示的是被賦予 MO Security Profile 的組織機構(gòu)的數(shù)量 [在 security profile 中查看組織層次或者組織列表]
MO_GLOBAL.ORG_SECURITY 的目的是什么 ?
Row-Level-Security 的目的是隱藏某些數(shù)據(jù)[基于一些條件]. RLS 是通過擴展安全對象上的where條件語句來實現(xiàn)的.
1. MO_GLOBAL.ORG_SECURITY 的功能是返回WHERE條件語句
2. 這個where 條件語句會被擴展到那些已經(jīng)啟用Multi Org行級別安全的 表/同義字/視圖 中
MO_GLOBAL.SET_POLICY_CONTEXT 的目的是什么?
這個 procedure 有兩個參數(shù)
p_access_mode
當你想讓你當前的session只會對一個ORG_ID工作時, 輸入"S"
當你想讓你當前的session只會對多個ORG_ID工作時, 輸入"M"
p_org_id
只有當p_access_mode的值是"S"時才需要
在SQL*Plus中,我想對一個指定的Org[單個Org]設(shè)置session, 在R12中我該如何做呢?
SQL>> exec MO_GLOBAL.SET_POLICY_CONTEXT('S',101);
在上面的例子中, ORG_ID 101 會被賦予你當前的session.
在其內(nèi)部, 當你對你的單個org設(shè)置上下文(Context)時,這段 藍色 的代碼將會被執(zhí)行: dbms_session.set_context('multi_org2', 'current_org_id', 101);
**** 如果當前的數(shù)據(jù)庫session被初始化為單個Org[如上面的步驟], 那么在行級別安全(Row-Level-Security)上擴展到對象的 Where 語句就會是
WHERE org_id = sys_context('multi_org2','current_org_id')
為什么我作為一個應(yīng)用程序技術(shù)人員會使用 MO_GLOBAL.SET_POLICY_CONTEXT 呢?
我們假設(shè)你想在ORG_ID為101下通過調(diào)用API來創(chuàng)建invoice, 但是這個API又沒有Org_id的參數(shù),那么你可以這樣做:
a. e執(zhí)行 MO_GLOBAL.SET_POLICY_CONTEXT('S',101)
b. 調(diào)用 Invoice API, 這將會在其內(nèi)部從當前的MO上下文(Context)中讀取ORG_ID.
在SQL*Plus中,我想模擬一次登錄到指定的職責上,我該如何做?
a. 調(diào)用 FND_GLOBAL.INITIALIZE
這將會設(shè)置你的職責ID,用戶ID等等(responsibility id, user_id)
b. 調(diào)用 MO_GLOBAL.INIT
這將會你的的職責/用戶中讀取 MO配置選項的值,并且初始化多組織訪問(Multi Org Access).
上述內(nèi)容就是怎么深入研究EBS MOAC,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。