sql - oracle执行中过滤谓词中的SYS_AUDIT是什么
问题描述
我在 2 个不同的环境(较低的 env 和 prod)中运行 1 个查询,但发现了计划差异。音量看起来几乎相同。在我进一步分析之前只是想了解谓词中的 SYS_AUDIT 是什么。
环境 1:查询大约需要 50 分钟。
谓词如下所示。我尝试搜索 SYS_AUDIT 并没有在谷歌中找到太多帮助。想了解什么是 SYS_AUDIT。
3 - filter(SYS_AUDIT(1,'schema','SUPPLY_table','SUPPLY_ATTR',3) IS NULL)
5 - access("SUPPLY_DIM"."SUPPLY_SET_ID"="SUPPLY_SET_ID")
filter((GREATEST("EFF_ASOF_DT","SUPPLY_DIM"."EFF_ASOF_DT")<=TO_DATE(' 2019-08-19 13:29:29',
'syyyy-mm-dd hh24:mi:ss') AND LEAST("EFF_UNTIL_DT","SUPPLY_DIM"."EFF_UNTIL_DT")>=TO_DATE(' 2019-08-19
13:29:29', 'syyyy-mm-dd hh24:mi:ss')))
Env 2:查询需要 15 分钟,谓词如下所示
3 - access("SUPPLY_DIM"."SUPPLY_SET_ID"="SUPPLY_table"."SUPPLY_SET_ID")
filter((GREATEST("SUPPLY_table"."EFF_ASOF_DT","SUPPLY_DIM"."EFF_ASOF_DT")<=TO_DATE(' 2019-08-19 13:29:29', 'syyyy-mm-dd hh24:mi:ss') AND
LEAST("SUPPLY_table"."EFF_UNTIL_DT","SUPPLY_DIM"."EFF_UNTIL_DT")>=TO_DATE(' 2019-08-19 13:29:29', 'syyyy-mm-dd hh24:mi:ss')))
解决方案
根据 My Oracle Support 文档“FGA Policies Disable Plan Stability Baselines (Doc ID 2272107.1)”:
FGA 是使用透明生成的 SYS_AUDIT 过滤谓词强制执行的,过滤谓词会改变查询计划的结构。由于 FGA 激活,构成查询执行计划的某些查询块会发生变化
与虚拟专用数据库类似,看起来细粒度的审计会默默地向查询添加谓词,以强制执行自定义安全规则。
不幸的是,对于如何进一步调查或如何调整您的查询,我无法提供太多建议。您可能需要在 FGA 特定论坛上发帖,或为 My Oracle Support 创建票证。
推荐阅读
- javascript - 将数据从 aws S3 加载到 jstree
- http - Charles:如何记录http请求排除OPTIONS模式?
- angular - 哪个更适合 css(Bootstrat 或自己的 CSS)、动画、以 Angular 6 启动新项目的组件?
- vue.js - 道具值没有在 axios 内更新
- c# - 如何在 Web API 中接收表单数据并处理数据
- c# - 在 C# 中创建异步资源观察器(服务代理队列资源)
- javascript - 无法读取空 Bing 地图的属性“原型”
- spring-boot - 我可以在服务器端使用 GoogleIdToken 在谷歌驱动器上创建文件吗?
- azure - 将 Azure SDK 2.1 更新到 3.0 的最新版本
- linux - 在 c 代码中使用 asm volatile 的多条汇编指令