关于Oracle EBS R12 表格XLA_TRANSACTION_ENTITIES 的安全策略(VPD)组研究

2023-10-28 20:48

本文主要是介绍关于Oracle EBS R12 表格XLA_TRANSACTION_ENTITIES 的安全策略(VPD)组研究,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

安全策略VPD技术是啥这里就不多说了,网上很多资料,说明很清楚的。这里说的是另外一个比较困惑的点:

对于一个(OBJECT_OWNER.)对象,如果同时存在多个安全策略组的设定,如何确定什么时候抓哪一个安全策略组的设定(WHERE CONDITION)?

例如,查询安全策略:

---安全策略:
SELECT * 
 FROM dba_policies DBA
WHERE dba.object_name = 'XLA_TRANSACTION_ENTITIES'; 


可以看到有5种安全策略之多。

在Toad里面执行语句:SELECT COUNT(*) FROM XLA_TRANSACTION_ENTITIES;

这个语句究竟会用到哪种安全策略?怎么选择?

具体如何研究的就不详细介绍了,我这里直接说结论(都是以XLA_TRANSACTION_ENTITIES作为例子的)。对这方面有兴趣研究的朋友可以验证一下我的结论:

对于一个(用户.对象),如果同时存在多个安全策略组的设定,如何确定什么时候抓哪一个安全策略组的设定(WHERE CONDITION)?
1)其实是用上下文确定的。对应上下文设定查询的表格是:DBA_POLICY_CONTEXTS
特定的会话的上下文的值的查询:SYS_CONTEXT('XLA','SECURITY_GROUP')
根据上下文的值,就可以定位是用哪个安全性的组。

2)问题来了,如果没有定义上下文的值(就是SYS_CONTEXT('XLA','SECURITY_GROUP')为空)的情况下,如何知道用到哪个安全性的组?
通过测试得出,当安全性的上下文的组没有定义的话,它并不是用到哪个组,而是全部的组的限制条件都合并起来!
这点可以通过查询动态性能图:V$VPD_POLICY 得出结论。
当安全性的组的上下文留空的时候,对于同一个SQL和同一个子游标,V$VPD_POLICY 查询出来的是所有组的限制条件。

---结论:
以XLA_TRANSACTION_ENTITIES表为例子(貌似目前EBS就只有这个表格有多个安全性的策略。。。)
1)在客制化的报表等地方,如果确定要用到哪个安全性的策略,最好定位准确。
  定义的过程:XLA_CONTEXT_PKG.set_security_context('XLA');
2)如果没有定义的话,最好确认一下单条SQL,在执行的时候它会用到那些安全策略自动提供的限制条件。
 (如何确认?很简单,就直接在Toad里面执行,然后用V$VPD_POLICY 查询即可)
3)还要注意的一点是,毕竟在报表执行的SQL和在Toad执行的SQL的环境是不一样的,
  所以也可以用上下文查询的语句SYS_CONTEXT('XLA','SECURITY_GROUP')确定在报表执行的环境,它到底有没有限制安全性组。再做开发的决定!

---------------------相关查询语句部分:

---安全策略:
SELECT * 
 FROM dba_policies DBA
WHERE dba.object_name = 'XLA_TRANSACTION_ENTITIES'; 

--可以看到,上面对同一个对象,定义了好几种安全策略。什么时候用哪种?
SELECT * FROM DBA_POLICY_GROUPS

--其实是用上下文确定的;
SELECT * FROM DBA_POLICY_CONTEXTS

--这里查询上下文:
SELECT SYS_CONTEXT('XLA','SECURITY_GROUP') FROM DUAL

--查询上下文所定义的PKG:
SELECT * FROM ALL_OBJECTS WHERE OBJECT_NAME LIKE '%CONTEXT%' AND OBJECT_TYPE = 'PACKAGE'


XLA_CONTEXT_PKG

---设定上下文的值,做测试用:
BEGIN
XLA_CONTEXT_PKG.set_security_context('XLA');
END;

---根据安全策略的包和函数,找出对应的具体的应用的安全策略:
SELECT XLA_SECURITY_POLICY_PKG.MO_POLICY('APPS','XLA_TRANSACTION_ENTITIES') 
  FROM dual; 
  
SELECT XLA_SECURITY_POLICY_PKG.XLA_STANDARD_POLICY('XLA','XLA_TRANSACTION_ENTITIES') 
  FROM dual; 

--情况SQL共享池的信息,正式环境慎用!!!
--ALTER SYSTEM FLUSH SHARED_POOL;

---测试SQL:
SELECT COUNT(*)--SAMT5
 FROM XLA_TRANSACTION_ENTITIES WHERE ROWNUM <=10;
 
SELECT * FROM V$SQL WHERE SQL_TEXT LIKE 'SELECT COUNT(*)--SAMT5%'

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('bc1c50j0969an',0,'ALL IOSTATS LAST'));

---V$SQLAREA包含当前位于共享池中的SQL语句,以及当前的执行统计。
SELECT * FROM V$VPD_POLICY WHERE OBJECT_NAME = 'XLA_TRANSACTION_ENTITIES' AND SQL_ID = 'bc1c50j0969an'


这篇关于关于Oracle EBS R12 表格XLA_TRANSACTION_ENTITIES 的安全策略(VPD)组研究的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/295843

相关文章

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

Oracle Scheduler任务故障诊断方法实战指南

《OracleScheduler任务故障诊断方法实战指南》Oracle数据库作为企业级应用中最常用的关系型数据库管理系统之一,偶尔会遇到各种故障和问题,:本文主要介绍OracleSchedul... 目录前言一、故障场景:当定时任务突然“消失”二、基础环境诊断:搭建“全局视角”1. 数据库实例与PDB状态2

Java利用Spire.XLS for Java设置Excel表格边框

《Java利用Spire.XLSforJava设置Excel表格边框》在日常的业务报表和数据处理中,Excel表格的美观性和可读性至关重要,本文将深入探讨如何利用Spire.XLSforJava库... 目录Spire.XLS for Java 简介与安装Maven 依赖配置手动安装 JAR 包核心API介

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅

Oracle迁移PostgreSQL隐式类型转换配置指南

《Oracle迁移PostgreSQL隐式类型转换配置指南》Oracle迁移PostgreSQL时因类型差异易引发错误,需通过显式/隐式类型转换、转换关系管理及冲突处理解决,并配合验证测试确保数据一致... 目录一、问题背景二、解决方案1. 显式类型转换2. 隐式转换配置三、维护操作1. 转换关系管理2.

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指