【转 oracle 监控执行计划突然变化】教程文章相关的互联网学习教程文章

最权威Oracle获取SQL语句执行计划大全

该文档为根据相关资料整理、总结而成,主要讲解Oracle数据库中,获取SQL语句执行计划的最权威、最正确的方法、步骤,此外,还详细 该文档为根据相关资料整理、总结而成,主要讲解Oracle数据库中,获取SQL语句执行计划的最权威、最正确的方法、步骤,此外,还详细说明了每种方法中可选项的意义及使用方法,以方便大家和自己日常工作中查阅使用。 1、查询v$sql_plan: SQL> col "Query Plan_Table" format a100 SQL> select id,lpad( ...

看懂Oracle的执行计划【图】

一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问路径的描述 二:怎样查看Oracle执行计划? 因为我一直用的PLSQL远程连接的公司数据库,所以这里以PLSQL为例: ①:配置执行计划需要显示的项: 工具 —> 首选项 —> 窗口类型 —> 计划窗口 —> 根据需要配置要显示在执行计划中的列 执行计划配置 执行计划的常用列字段解释: 基数(Rows):Oracle估计的当前操作的返回结果集行数 字节(Bytes):执行...

oracle 从执行计划的预估行数看执行计划是否正确【图】

oracle 从执行计划的预估行数看执行计划是否正确从执行计划的预估行数可以看出执行计划是否正确,作为优化的你曾经注意到了么? 今天在监控系统垃圾sql语句的时候发现一个sql语句跑了10个小时了,凭直觉这个sql肯定哪里出现问题了,好吧,老规矩,先看看内存中执行计划和具体的sql语句吧,这里的sql语句:INSERT /*+ append */ INTOCJG_MID_ACCT(ACCT,PARTY_NO,CHINESE_NAME,DATE_OPENED,RMB_CURRENT_BAL,BILL_DATE,RMB_CRLIM,AI_L...

【DB笔试面试601】在Oracle中,给出下面执行计划的执行顺序。【代码】【图】

?题目部分阅读如下的执行计划,给出SQL的执行顺序。1----------------------------------------- 2|?Id??|?Operation 3----------------------------------------- 4|???0?|?SELECT?STATEMENT 5|???1?|??SORT?AGGREGATE 6|???2?|???VIEW 7|???3?|????UNION-ALL 8|*??4?|?????FILTER 9|*??5?|??????HASH?JOIN10|???6?|???????TABLE?ACCESS?FULL11|*??7?|???????TABLE?ACCESS?FULL12|*??8?|??????TABLE?ACCESS?BY?INDEX?ROWID13|*??9...

【DB笔试面试602】在Oracle中,如何从执行计划初步判断SQL的性能问题?【图】

?题目 部分 在Oracle中,如何从执行计划初步判断SQL的性能问题? ?答案部分 从以下几点去考虑:l 执行计划关注点l 预估返回行数l 真实返回行与逻辑读比率l 预估行数和真实返回行数的差异l Predicate Information部分是否有隐式类型转换l 递归调用(recursive calls)值是否过大l 表的访问次数是否过大l 注意表真实访问行数l 查看是否在磁盘排序l 注意A-Time时间列l 注意Pstart、Pstop、PARTITION RANGE ALLl 注意MERGE JOIN C...

【DB笔试面试601】在Oracle中,给出下面执行计划的执行顺序。【代码】【图】

? ? ? ? ? ?题目 ? ? ? ? 部分阅读如下的执行计划,给出SQL的执行顺序。 1----------------------------------------- 2| Id | Operation 3----------------------------------------- 4| 0 | SELECT STATEMENT 5| 1 | SORT AGGREGATE 6| 2 | VIEW 7| 3 | UNION-ALL 8|* 4 | FILTER 9|* 5 | HASH JOIN 10| 6 | TABLE ACCESS FULL 11|* 7 | TABLE ACCESS FULL 12|* 8 | TAB...

【DB笔试面试599】在Oracle中,如何在不执行SQL的情况下获取执行计划?【图】

? ? ? ? ? ?题目 ? ? ? ? 部分 在Oracle中,如何在不执行SQL的情况下获取执行计划?? ? ?? ? ? ? ? ?答案部分 ? ? ? ? ?1、“EXPLAIN PLAN FOR SQL”不实际执行SQL语句,生成的计划未必是真实执行的计划。但是,必须要有PLAN_TABLE表,可以执行脚本“@?/rdbms/admin/utlxplan.sql”来创建。2、SQL*Plus的AUTOTRACE功能,命令:SET AUTOTRACE TRACEONLY EXPLAIN。除SET AUTOTRACE TRACEONLY EXPLAIN外其它的AUTOTRACE方式均实际执行...

【DB笔试面试599】在Oracle中,如何在不执行SQL的情况下获取执行计划?【图】

?题目 部分 在Oracle中,如何在不执行SQL的情况下获取执行计划? ?答案部分 1、“EXPLAIN PLAN FOR SQL”不实际执行SQL语句,生成的计划未必是真实执行的计划。但是,必须要有PLAN_TABLE表,可以执行脚本“@?/rdbms/admin/utlxplan.sql”来创建。2、SQL*Plus的AUTOTRACE功能,命令:SET AUTOTRACE TRACEONLY EXPLAIN。除SET AUTOTRACE TRACEONLY EXPLAIN外其它的AUTOTRACE方式均实际执行SQL。但是,如果该命令后执行的是DML语...

【DB笔试面试600】在Oracle中,如何获取SQL历史执行计划?【代码】【图】

?题目 部分 在Oracle中,如何获取SQL历史执行计划? ?答案部分历史执行计划只能从AWR中获取,如果AWR没有记录的话,那么就无法获取历史执行计划了,获取历史执行计划的命令如下所示:1SELECT??*?FROM?TABLE(DBMS_XPLAN.DISPLAY_AWR('&sqlid'));SELECT??*?FROM?TABLE(DBMS_XPLAN.DISPLAY_AWR('&sqlid'));对于历史计划,可以生成SQL报告,命令如下所示:1SELECT?*?FROM?TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_SQL_REPORT_HTML(L_D...

【DB笔试面试598】在Oracle中,如何得到真实的执行计划?【代码】【图】

?题目 部分 在Oracle中,如何得到真实的执行计划? ?答案部分在Oracle数据库中判断得到的执行计划是否准确,就是看目标SQL是否被真正执行过,真正执行过的SQL所对应的执行计划就是准确的,反之则有可能不准,因此,通过10046事件及如下的几种方式得到的执行计划是最准确的,而从其它方式获取到的执行计划都有可能不准确。1SELECT?*?FROM?TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL,?NULL,?'ADVANCED?ALLSTATS'));2SELECT?*?FROM?T...

【DB笔试面试597】在Oracle中,获取执行计划有哪几种方法?【代码】【图】

?题目 部分 在Oracle中,获取执行计划有哪几种方法? ?答案部分一般来说,有如下几种获取执行计划的方式:1、AUTOTRACE方式AUTOTRACE是Oracle自带的客户端工具SQL*Plus的一个特性。启用AUTOTRACE后,SQL*Plus会自动收集执行过的SQL语句的执行计划、性能统计数据等,并在语句执行结束后显示在SQL*Plus中。DBA用户可以直接使用AUTOTRACE功能,但是如果用户没有DBA权限,那么需要在SYS用户下执行plustrce.sql脚本,自动创建PLUST...

【DB笔试面试596】在Oracle中,什么是执行计划?【图】

?题目 部分 在Oracle中,什么是执行计划? ?答案部分 执行计划指示Oracle如何获取和过滤数据、产生最终结果集,这是影响SQL语句执行性能的关键因素。在深入了解执行计划之前,首先需要知道执行计划是在什么时候产生的,以及如何让SQL引擎为语句生成执行计划。在Oracle中,任何一条语句在解析过程中都会生成一个唯一的数值标识,即SQL_ID。而同一条语句,在解析过程中,可能会因为执行环境的改变(例如某些优化参数被改变)而生...

【DB笔试面试258】在Oracle中,执行计划里的access和filter有什么区别?【图】

Q ? ? ? ? ?题目如下所示:在Oracle中,执行计划里的access和filter有什么区别?? ? ?A ? ? ? ? ?答案如下所示: ? ? ? ? ?如下所示:Predicate Information (identified by operation id):--------------------------------------------------- 4 - access("A"."EMPNO"="B"."MGR") filter("A"."EMPNO"="B"."MGR") 5 - filter("B"."MGR" IS NOT NULL)一般而言,access表示这个谓词条件的值将会影响数据的访问路径(表还是...

【DB笔试面试602】在Oracle中,如何从执行计划初步判断SQL的性能问题?【图】

? ? ? ? ? ?题目 ? ? ? ? 部分 在Oracle中,如何从执行计划初步判断SQL的性能问题?? ? ?? ? ? ? ? ?答案部分 ? ? ? ? ?从以下几点去考虑:l 执行计划关注点l 预估返回行数l 真实返回行与逻辑读比率l 预估行数和真实返回行数的差异l Predicate Information部分是否有隐式类型转换l 递归调用(recursive calls)值是否过大l 表的访问次数是否过大l 注意表真实访问行数l 查看是否在磁盘排序l 注意A-Time时间列l 注意Pstart、Pstop、P...

【DB笔试面试597】在Oracle中,获取执行计划有哪几种方法?【代码】【图】

?题目 部分在Oracle中,获取执行计划有哪几种方法? ?答案部分一般来说,有如下几种获取执行计划的方式:1、AUTOTRACE方式AUTOTRACE是Oracle自带的客户端工具SQL*Plus的一个特性。启用AUTOTRACE后,SQL*Plus会自动收集执行过的SQL语句的执行计划、性能统计数据等,并在语句执行结束后显示在SQL*Plus中。DBA用户可以直接使用AUTOTRACE功能,但是如果用户没有DBA权限,那么需要在SYS用户下执行plustrce.sql脚本,自动创建PLUSTR...