SQL Access Advisor

Dav_笔记13:SQL Access Advisor 之 2 使用SQL Access Advisor-2 您可以使用多个目录视图查看SQL Access Advisor生成的每个建议,例如(DBA,USER)_ADVISOR_RECOMMENDATIONS。此外,顾问在推荐过程早期提出的建议不包含任何基表分区建议。有几个控制命名约定的任务参数(MVIEW_NAME_TEMPLATE和INDEX_NAME_TEMPLATE),这些新对象的所有者(DEF_INDEX_OWNER和DEF_MVIEW_OWNER)以及表空间(DEF_MVIEW_TABLESPACE和DEF_INDEX_TABLESPACE)。 阅读详情

Oracle 数据库 10g 提供了大量帮助程序(或“顾问程序”),可帮助您决定最佳操作流程。其中一个示例是 SQL Tuning Advisor,它可以提供有关查询调整以及在流程中延长整个优化过程的建议。

 

但请考虑以下调整案例:假设一个索引确实有助于某个查询,但该查询只执行一次。这样,即使该查询可以得益于此索引,但创建索引的成本也会超出其带来的好处。要按这种方式分析案例,您需要了解查询的访问频率和原因。

另一个顾问程序 (SQL Access Advisor) 可执行这种类型的分析。除了像在 Oracle 数据库 10g 中一样可以分析索引、物化视图等,Oracle 数据库 11g 中的 SQL Access Advisor 还可以分析表和查询以识别可能的分区策略 — 这在设计最佳模式时可以提供很大帮助。在 Oracle 数据库 11g 中,SQL Access Advisor 现在可以提供与整个负载相关的建议,包括考虑创建成本和维护访问结构。

在本文中,您将了解新的 SQL Access Advisor 如何解决常见问题。(注:出于演示目的,我们将通过一个语句演示这个功能;但是,Oracle 建议使用 SQL Access Advisor 来帮助调整整个负载,而不只是一个 SQL 语句。)

问题

下面是一个典型问题。应用程序发出了以下 SQL 语句。该查询似乎要消耗大量资源并且速度很慢。

 
select store_id, guest_id, count(1) cnt
from res r, trans t
where r.res_id between 2 and 40
and t.res_id = r.res_id
group by store_id, guest_id
/

该 SQL 涉及两个表,即 RES 和 TRANS;后者是前者的子表。您需要找到提高查询性能的解决方案 — SQL Access Advisor 正是最合适的工具。

 

您可以通过命令行或 Oracle 企业管理器数据库控制与顾问程序进行交互,但使用 GUI 可以提供更好的值(GUI 可让您将解决方案可视化,并将许多任务简化为简单的点击操作)。

要使用企业管理器中的 SQL Access Advisor 解决 SQL 中的问题,请遵循以下步骤。

  1. 当然,第一个任务是启动企业管理器。在 Database 主页上,向下滚动到页面底部,您将在这里看到几个超链接,如下图所示:

     

    图 1
  2. 在该菜单中,单击 Advisor Central,这将显示一个与下图类似的屏幕。下面仅显示了该屏幕的顶部。

     

    图 2
  3. 单击 SQL Advisors,这将显示一个与下图类似的屏幕。

     

    图 3
  4. 在该屏幕中,您可以计划 SQL Access Advisor 会话,并指定其选项。顾问程序必须收集一些要使用的 SQL 语句。最简单的选项就是通过 Current and Recent SQL Activity 从共享池获取它们。选择该选项,您可以获取共享池中缓存的所有 SQL 语句来进行分析。

    但是,在某些情况下,您并不需要共享池中的所有语句;而仅需要其中的一组特定语句。为此,您需要在另一个屏幕上创建一个“SQL 调整工具集”,然后在这里(即,该屏幕中)引用集合名。

    此外,您可能希望根据理论上预期会发生的情况来运行复合负载。这些类型的 SQL 语句将不会位于共享池中,因为它们尚未处理。相反,您需要创建这些语句并将其存储在一个特殊表中。在第三个选项 (Create a Hypothetical Workload...) 中,您需要提供该表的名称以及模式名。

    对于本文,假设您希望从共享池中获取 SQL。因此,选择第一个选项(即默认选项),如屏幕所示。

  5. 但是,您可能并不需要所有语句,而只需要一些关键语句。例如,您可能只希望分析用户 SCOTT(即应用程序用户)执行的 SQL。所有其他用户可能会执行即席 SQL 语句,但您希望在分析中排除它们。在这种情况下,单击 Filter Options 前面的“+”号,如下图所示。

     

    图 4
  6. 在该屏幕中,在要求您输入用户的文本框中输入 SCOTT,然后选择单选按钮 Include only SQL...(默认选项)。同样,您也可以排除某些用户。例如,您希望捕获数据库中的所有活动,除了用户 SYS、SYSTEM 和 SYSMAN。您可以在文本框中输入这些用户,然后单击按钮 Exclude all SQL statements...
  7. 您可以按 Module Id、Action 甚至 SQL 语句中的特定字符串来过滤语句中访问的表。其目的是确保只分析感兴趣的语句。选择整个 SQL 缓存的小型子集可以加快分析速度。在本例中,我们假设用户 SCOTT 仅执行了一个语句。如果不是这样,您可以施加额外的过滤条件,将分析集合减少到只有一个 SQL(即,原始问题语句中提到的那个 SQL)。
  8. 单击 Next。这将显示以下屏幕(仅显示了顶部):

     

    图 5
  9. 在该屏幕中,您可以指定应该搜索哪些类型的建议。例如,在本例中,我们希望顾问程序查找潜在的索引、物化视图和分区,因此应选中这些项旁边的所有复选框。对于 Advisor Mode,您可以进行选择;默认选项 Limited Mode 仅处理高成本 SQL 语句。当然,这可以加快速度并获得更好的结果集。要分析所有 SQL,应使用 Comprehensive Mode。(在本例中,模式的选择无关紧要,因为您只有一个 SQL。)
  10. 屏幕的后半部分显示了高级选项,例如,应该如何确定 SQL 语句的优先顺序、所使用的表空间等等。您可以保留默认项为标记状态(稍后将描述更多内容)。单击 Next,这将显示计划屏幕。选择 Run Immediately,并单击 Next
  11. 单击 Submit。这将创建一个 Scheduler 作业。您可以单击该屏幕中显示的作业超链接,它们位于页面顶部。作业将显示为 Running
  12. 反复单击 Refresh 直到您看到 Last Run Status 列下方的值更改为 SUCCEEDED
  13. 现在,返回 Database 主页并单击 Advisor Central,正如您在第一步中所做的那样。现在,您将看到 SQL Access Advisor 行,如下图所示:

     

    图 6
  14. 该屏幕表明 SQL Access Advisor 任务已经 COMPLETED。现在,单击按钮 View Result。屏幕显示如下:

     

    图 7
  15. 该屏幕说明了一切!SQL Access Advisor 分析了 SQL 语句,并发现某些解决方案可以将查询性能提高十倍。要查看提供了哪些具体建议,单击 Recommendations 选项卡,这将显示详细信息屏幕,如下所示。

     

    图 8
  16. 从较高级别看,该屏幕提供了许多很好的信息。例如,对于 ID = 1 的语句,Actions 列下方有两个建议操作。下一列 Action Types 显示了操作类型,由彩色方块表示。根据下方的图标指南,您可以了解这两个操作分别针对索引和分区。它们可以共同将性能提高几个数量级。

    要确切了解可以提高哪个 SQL 语句,单击 ID,这将显示以下屏幕。当然,该分析只有一个语句,因此这里只显示一项内容。如果您有多个语句,应该可以看到所有内容。

     

    图 9
  17. 在上面的屏幕上,请注意 Recommendation ID 列。单击超链接将显示详细建议,如下所示:

     

    图 10
  18. 该屏幕将提供非常清楚的解决方案描述。它提出了两个建议:创建分区表和使用索引。随后,它发现索引已经存在,因此建议保留该索引。

    如果您单击 Action 列下方的 PARTITION TABLE,将看到 Oracle 为使其成为分区表而生成的实际脚本。但是,在单击之前,在文本框中填入表空间名称。这将允许 SQL Access Advisor 在构建该脚本时使用该表空间:

    Rem 
    Rem Repartitioning table "SCOTT"."TRANS"
    Rem 
    
    SET SERVEROUTPUT ON
    SET ECHO ON
    
    Rem 
    Rem Creating new partitioned table
    Rem 
    CREATE TABLE "SCOTT"."TRANS1" 
    (    "TRANS_ID" NUMBER, 
        "RES_ID" NUMBER, 
        "TRANS_DATE" DATE, 
        "AMT" NUMBER, 
        "STORE_ID" NUMBER(3,0)
    ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
    TABLESPACE "USERS" 
    PARTITION BY RANGE ("RES_ID") INTERVAL( 3000) ( PARTITION VALUES LESS THAN (3000)
    );
    
    begin
    dbms_stats.gather_table_stats('"SCOTT"', '"TRANS1"', NULL, dbms_stats.auto_sample_size);
    end;
    /
    
    Rem 
    Rem Copying constraints to new partitioned table
    Rem 
    ALTER TABLE "SCOTT"."TRANS1" MODIFY ("TRANS_ID" NOT NULL ENABLE);
    
    Rem 
    Rem Copying referential constraints to new partitioned table
    Rem 
    ALTER TABLE "SCOTT"."TRANS1" ADD CONSTRAINT "FK_TRANS_011" FOREIGN KEY ("RES_ID")
         REFERENCES "SCOTT"."RES" ("RES_ID") ENABLE;
    
    Rem 
    Rem Populating new partitioned table with data from original table
    Rem 
    INSERT /*+ APPEND */ INTO "SCOTT"."TRANS1"
    SELECT * FROM "SCOTT"."TRANS";
    COMMIT;
    
    Rem 
    Rem Renaming tables to give new partitioned table the original table name
    Rem 
    ALTER TABLE "SCOTT"."TRANS" RENAME TO "TRANS11";
    ALTER TABLE "SCOTT"."TRANS1" RENAME TO "TRANS";
    
    脚本实际上将构建一个新表,然后将其重命名以匹配原始表。
  19. 最后一个选项卡 Details 将显示有关任务的某些有趣的详细信息。尽管它们对于分析并不重要,但可以提供有关顾问程序如何得出这些结论的有价值线索,从而有助于您自己的思考过程。该屏幕分为两部分,第一个部分是 Workload and Task Options,如下所示。

     

    图 11
  20. 屏幕的后半部分显示任务的运行日志。有时,顾问程序无法处理所有 SQL 语句。如果某些 SQL 语句被舍弃,就会在这里显示,并计入 Invalid SQL String:Statements discarded 计数。如果您不明白为什么只分析了数个 SQL 语句,下面就是原因。

     

    图 12

高级选项

在上面的第 10 步中,我使用了一个对高级设置的引用。我们来看看这些设置的作用。

单击 Advanced Options 左侧的加号,这将显示一个屏幕,如下所示:

 

图 13

 

该屏幕允许您输入将在其中创建索引的表空间的名称、索引的创建模式等。对于分区建议,您可以指定实现分区的表空间等。

看来,最重要的元素是 Consider access structures creation costs recommendations 复选框。如果您选中该复选框,SQL Access Advisor 将考虑索引本身的创建成本。例如,是否应该创建 10 个新索引,相关成本可能会导致 SQL Access Advisor 建议不创建它们。

您还可以在该屏幕中指定索引的最大大小。

与 SQL Tuning Advisor 的差异

在简介中,我只简单描述了该工具与 SQL Tuning Advisor 的不同,下面我们来详细说明它们之间的差异。一个简单演示可以最好地说明这些差异。

SQL Advisors 屏幕中,选择 SQL Tuning Advisor 并运行。完成后,下面是显示结果的屏幕部分:

 

图 14

 

现在,如果您单击 View 查看建议,将显示一个如下所示的屏幕:

 

图 15

 

仔细查看建议:它将根据 RES_ID 列上的 TRANS 创建一个索引。但是,SQL Access Advisor 没有执行该建议。相反,它建议将表分区,原因如下:根据访问模式和可用数据,SQL Access Advisor 确定分区比在列上构建索引更加高效。与 SQL Tuning Advisor 提供的建议相比,这是一个更“实际”的建议。

SQL Tuning Advisor 提出的建议只对应以下四个目标之一:

  • 为统计信息丢失或失效的对象收集统计信息
  • 考虑优化器的任何数据偏差、复杂谓词或失效的统计信息
  • 重新构建 SQL 以优化性能
  • 提出新索引建议

这些建议仅与单个语句(而非整个负载)相关。因此,只能将 SQL Tuning Advisor 偶尔用于高负载或关键业务查询。注意,与 SQL Access Advisor 相比(其标准更加宽松),该顾问程序只建议能够提供重大性能改进的索引。当然,SQL Tuning Advisor 没有分区顾问程序。

用例

SQL Access Advisor 对于调整模式(而不仅仅是查询)很有用。作为一个最佳实践,您可以使用该策略来开发高效的 SQL 调整计划:

  1. 搜索高成本 SQL 语句,或者(更好的是)评估整个负载。
  2. 将可疑语句放入 SQL 调整工具集。
  3. 使用 SQL Tuning Advisor 和 SQL Access Advisor 对其进行分析。
  4. 得到分析结果;记录建议。
  5. 将建议插入 SQL Performance Analyzer(参见本文)。
  6. 在 SQL Performance Analyzer 中检查更改前后的情况,并得出最佳解决方案。
  7. 重复上述操作,直到获得最佳模式设计。
  8. 获得最佳模式设计之后,您可能希望使用 SQL 计划管理基准锁定该计划(如本文所述)。

结论

调整数据库结构是最费时费力的棘手任务之一,同时也是最有成效的任务之一。同样,分区是一个非常有效的调整工具,但分区的选择很难轻松决定。SQL Access Advisor 在这些过程中提供了一个非常有用的帮助。

返回到“Oracle 数据库 11g:面向 DBA 和开发人员的重要特性”主页

Dav_笔记13:SQL Access Advisor 之 2 使用SQL Access Advisor-1 本节讨论有关SQL Access Advisor的一般信息和使用所需的步骤,包括:■使用SQL Access Advisor的步■使用SQL Access Advisor所需的权限■设置任务和模板■SQL Access Advisor工作负载。 阅读详情

相关推荐

Dav_笔记13:SQL Access Advisor 之 2 使用SQL Access Advisor-3

■执行快速调整■管理任务。

Dav_2099的博客 1084

Oracle 11g重要特性

Oracle 11g的重要特性: 修补和升级、RAC One Node 以及 Clusterware 仅限第 2 版:了解如何针对集群实现单一名称,针对单实例数据库实现高可用性,将 OCR 和表决磁盘放在 ASM 上,以及探索一些与高可用性相关的其他改进。 在 Oracle Database 11g 第 2 版中,安装过程发生了三项重大改动。首先,一个新界面取代了我们熟悉的 Oracle U

gguxxing008的专栏 1829

SCHUNK SVH五指灵巧手 | 熵洛智能

雄克仿真五指机械手产品系列可以如人手操作那般完美地完成抓取操作。电子装置完全集成于腕关节中,使五指机械手几乎可以完成所有的人体手部动作。凭借带有9个驱动器的运动指骨,机械手可高精度地 执行多种抓取操作。富有弹性的抓取表面确保了对物体的可靠抓取。除了开启抓取和操作任务的全新领域之外,雄克还为在五指机械手的手势基础上进行人与机器人的交流开创了无限可能。编辑切换为居中添加图片注释,不超过 140 字(可选)产品特点:机械手有左手或右手两种版本适合移动应用耗能低,使用 24 V DC 在腕关节处完整集成了控制、调节

ShannonTech的博客 1287

Oracle 11g新特性之SecureFiles

SecureFiles:新 LOB 了解如何使用新一代 LOB:SecureFiles。SecureFiles 集外部文件和数据库 LOB 方法的优点于一身,可以存储非结构化数据,允许加密、压缩、重复消除等等。 数据库驻留 ...

ctpq29224的博客 474

DBA_Oracle Database 11g 面向 DBA 和开发人员的重要特性

 2015-01-23 Created By BaoXinjian 一、摘要 在这个由多个部分组成的系列中,通过简单、可操作的方法文档和示例代码,了解这些新特性(例如,数据库重放、闪回数据存档、基于版本的重定义以及 SecureFiles 工作)的重要性。(针对第 2 版进行了更新!) 更改(尽管会不断发生)极少是无风险的。即使更改相对较小(例如,创建索引),您的目标可能还是尽可能准确地...

weixin_33898233的博客 171

Oracle 11g新特性之Pivot 和 Unpivot

Pivot 和 Unpivot 使用简单的 SQL 以电子表格类型的交叉表报表显示任何关系表中的信息,并将交叉表中的所有数据存储到关系表中。Pivot 如您所知,关系表是表格化的,即,它们以列-值对的形式出现。假设一个表...

ctpq29224的博客 270

Oracle Database 11g 面向 DBA 和开发人员的重要特性

新进程 每个新版本的 Oracle Database 中都会引入一组新进程的新缩写。下面是 Oracle Database 11g 中的新进程缩写列表: 进程 名称 描述 ACMS 内存服务器原子控制文件 仅适用于 RAC 实例中。执行分布式 SGA 更新时,ACMS 可确保在所有实例上发生更新。如果某个实例上的更新失败

I'm calvin 1738

用DBMS_ADVISOR.SQLACCESS_ADVISOR创建SQL Access Advisor访问优化建议

用DBMS_ADVISOR.SQLACCESS_ADVISOR创建SQL Access Advisor访问优化建议

IT圈黎俊杰 2129

Dav_笔记13:SQL Access Advisor 之 1 Summary

使用SQL Access Advisor的一种简单方法是调用其向导,该向导可从Advisor Central页面的Enterprise Manager中获得。如果您更喜欢通过DBMS_ADVISOR包使用SQL Access Advisor,那么本节将介绍必须调用这些过程的基本组件和顺序。本节介绍生成一组建议的四个步骤:■创建任务■定义工作负载■生成建议■查看并实施建议工作负载由一个或多个SQL语句以及完全描述每个语句的统计信息和属性组成。完整工作负载包含来自目标业务应用程序的所有SQL语句。

Dav_2099的博客 1157

ocp-083 SQL Tuning AdvisorSQL Access Advisor

SQLTuningAdvisorSQLAccessAdvisor

nxzjkcsakk的博客 624

SQL Access Advisor(zt)

SQL Access Advisor in Oracle Database 10g The SQL Access Advisor makes suggestions about indexes and materiali...

congnen9588的博客 170

Dav_笔记13:SQL Access Advisor 之 2 使用SQL Access Advisor-4

本节说明了使用SQL Access Advisor的一些典型方案。Oracle数据库提供了一个脚本,其中包含本章的示例aadvdemo.sql。来自用户定义的工作负载的建议以下示例从用户定义的表SH.USER_WORKLOAD导入工作负载。 然后,它会创建一个名为MYTASK的任务,将存储预算设置为100 MB,然后运行该任务。 PL / SQL过程打印建议。 最后,该示例生成一个脚本,您可以使用该脚本来实现建议。使用SQL语句加载USER_WORKLOAD表,如下所示: 步骤3从用户定义的表SH

Dav_2099的博客 1009

Oracle - SQL调整顾问(SQL tuning advisor)、SQL访问顾问(SQL Access Advisor

cache Manager 里面

LawssssCat的博客 1024

SQL Access Advisor的使用

原文地址: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/tgsql/sql-access-advisor.html#GUID-816A7103-440D-4AB8-8ED5-BD4DBDEBB283 -- 先放一张图 --- 创建sql tuning set conn sh/sh SET SERVE...

文档搬运工 1198

sql tuning advisor and sql access advisor

sql tuing advisor将一条或多条SQL语句作为输入,并且研究这些语句的结构与执行方式.这些SQL语句称为SQL TUNING SET,标识负载较高的SQL语句与建议改进措施. SQL ACCESS ADVISOR...

cnn35835375的博客 113

SQL Access AdvisorSQL Tuning Advisor

https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1794009000346753857 In a nutshell - the tu...

congsong2560的博客 193

SQL Access Advisor功能笔记

SQL Access Advisor: 根据系统的负载推荐SQL的访问路径, 主要是index和materiliazed view。并产生SQL脚本文件。 1 创建task VARIABLE task_id NUMBER;V...

congjiao5415的博客 196

SQLSQL Access Advisor.Quick Tune

一、功能:        Materialized views, partitions, and indexes are essential when tuning a database to achieveoptimum performance for complex, data-intensive queries.        SQL AccessAdvisor helps you

u010719917的专栏 1058

yolov5运行detect.py之后卡住了?没后续,没结果,没报错,怎么办?如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1076

基于Pytorch框架搭建的视觉操作关系推理与多物体抓取系统_使用VMRD数据集进行训练和验证_通过Cascade_R-CNN实现目标检测与ROI提取_结合旋转矩形锚框的FCN网络.zip

基于Pytorch框架搭建的视觉操作关系推理与多物体抓取系统_使用VMRD数据集进行训练和验证_通过Cascade_R-CNN实现目标检测与ROI提取_结合旋转矩形锚框的FCN网络.zip

上一篇: oracle:端口查看, isqlplus 命令行启动与关闭,DBA访问
下一篇: rman参数的意义
sopost
博客等级 码龄20年 20粉丝 19原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值