屏蔽(EBS检查无法直接查询解决)"/>
解除OU屏蔽(EBS检查无法直接查询解决)
解除OU屏蔽(EBS检查无法直接查询解决)
具有OU屏蔽的例子
SELECT t_id, t.* FROM po.po_headers_all t -- 无屏蔽表,在PL/SQL运行有数据
SELECT t_id, t.* FROM apps.po_headers t -- 包含OU屏蔽,在PL/SQL中查询无数据
多组织屏蔽原理
1. 在PO Schema 上创建一张表, 命名为 PO_HEADERS_ALL2. 在APPS schema 上创建一个同义字(synonym) PO_HEADERS_ALL , 指向 PO.PO_HEADERS_ALL3. 在APPS 中别一个同义字(synonym) 被创建: PO_HEADERS, 指向 PO_HEADERS_ALL4. 通过使用 MO_GLOBAL.ORG_SECURITY, 行级别的安全被应用于 PO_HEADERS.5. 这个可以通过运行 SQL select * from all_policies where object_name='PO_HEADERS' 来再次确认6. 这个策略的影响是无论何时当你访问 PO_HEADERS 时, Oracle RLS 会动态的扩展WHERE 条件语句,如SELECT * FROM PO_HEADERS WHERE EXISTS (SELECT 1 FROM mo_glob_org_access_tmp oa WHERE oaanization_id = org_id)
通过模拟登录使apps.po_headers在PL/SQL中可以查询到数据
BEGINfnd_global.apps_initialize(user_id => 0 /* FND_GLOBAL.USER_ID*/, -- 请求提交用户IDresp_id => 56736, -- 请求提交职责IDresp_appl_id => 222); -- 职责应用mo_global.init('M');
END;SELECT * FROM mo_glob_org_access_tmp;
其中apps_initialize参数可以通过如下步骤获取值:
-
帮助->诊断->检查
-
“块”中填写值:profiles
-
在字段里分别填写:user_id、resp_id、resp_appl_id获取值
-
模拟登录完以后,就可以在PL/SQL中运行查询语句
SELECT t_id, t.* FROM apps.po_headers t -- 模拟登录以后,查询包含数据
更多推荐
解除OU屏蔽(EBS检查无法直接查询解决)
发布评论