1. 采用 explain plan
如果 PLAN_TABLE 表不存在,执行 $ORACLE_HOME/rdbms/admin/utlxplan.sql 创建 plan_table 表。创建表的过程如下:
打开 cmd
sqlplus /nolog
conn test/test123@test
将 $ORACLE_HOME/rdbms/admin/utlxplan.sql 的内容粘贴到 cmd ,然后回车执行。
第一步: explain plan for select * from ......
第二步: select * from table(DBMS_XPLAN.Display)
如:
SQL> explain plan for select * from student;
Explained.
SQL> select * from table(DBMS_XPLAN.Display);
也可以查找 SQL 的 ID 后再看执行计划
select sql_id,address,hash_value, executions, sql_text from v$sql where sql_text like '%select id from student%';
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('sql_id', 0, 'ADVANCED'));
DBMS_XPLAN是用来展现执行计划的, 通过display函数我们可以展示explain plan方法获得的执行计划,通过display_cursor函数可以展示动态性能视图(v$sql_plan和v$sql_plan_statistics等)中获得的执行计划。explain plan只是一个评估的执行计划,并不是真正SQL执行的路径,而动态性能视图是SQL执行过程中的执行路径,所以说,更准确一些。
2. 使用 oracle 第三方工具
a. plsql developer
写好SQL 后,按F5
b.Toad
写好SQL 后,按Ctrl+E
3. 使用 Autotrace
Set timing on -- 记录所用时间
Set autot trace -- 自动记录执行计划
关于Autotrace 几个常用选项的说明:
SET AUTOTRACE OFF ---------------- 不生成AUTOTRACE 报告,这是缺省模式
SET AUTOTRACE ON EXPLAIN ------ AUTOTRACE 只显示优化器执行路径报告
SET AUTOTRACE ON STATISTICS -- 只显示执行统计信息
SET AUTOTRACE ON ----------------- 包含执行计划和统计信息
SET AUTOTRACE TRACEONLY ------ 同set autotrace on ,但是不显示查询
例:
SQL> SET AUTOTRACE ON
SQL> select id from student;
4. sql trace
a.alter session set sql_trace=true;
b. 执行 sql
c.alter session set sql_trace=false;
d. 利用 TKPROF 工具格式化输出的 trace 文件。
命令为:Tkprof 文件路径 d:1.txt
注: tkprof 直接在 cmd 下就可以输入
任何一条 SQL ,都包含三个步骤
分析 (Parse):SQL 的分析阶段
执行 (Execute):SQL 的执行阶段
数据提取 (Fetch): 数据提取阶段 ( 数据提取不一定一次就可以完成 )
COUNT: 计数器,表示当前的操作被执行了多少次。
CPU: 当前的操作消耗 CPU 的时间(单位秒)
ELAPSED: 当前的操作一共用时多少。
DISK: 当前操作的物理读(磁盘 I/O 次数);
QUERY: 当前操作的一致性读方式读取的数据快数(通常是查询时使用)
CURRENT: 当前操作的 CURRENT 方式读取的数据块数(通常是修改时使用)
ROWS: 当前操作处理的数据记录数
CR :一致性度 PR :物理读, PW: 物理写, TIME 就不用解释了吧单位是 us( 微秒 )
5. 诊断事件 (10046)
alter session set events '10046 trace name context forever ,level 12' ;
select * from student;
alter session set events '10046 trace name context off' ;
tkprof 文件路径 d:5.txt
6. 10053 事件
启用 10053 事件
ALTER SESSION SET EVENTS='10053 trace name context forever, level 1';
ALTER SESSION SET EVENTS='10053 trace name context forever, level 2';
关闭 10053 事件:
ALTER SESSION SET EVENTS '10053 trace name context off';
如:
ALTER SESSION SET EVENTS='10053 trace name context forever, level 2';
select * from student;
ALTER SESSION SET EVENTS '10053 trace name context off';
注意:
1 、 sqlplus 中打开 autotrace 看到的执行计划实际上是用 explain plan 命令得到的, explain plan 命令不会进行 bind peeking 。应该通过 v$sql_plan 查看 SQL 的真实的执行计划。
2 、 10053 只对 CBO 有效,而且如果一个 sql 语句已经解析过,就不会产生新的 trace 信息。 (
刷新共享池,alter system flush shared_pool)
3 、 10053 事件产生的 trace 文件不能用 tkprof 格式化。
4 、执行计划的查看顺序是:从内到外 从上到下。对于不并列的,靠右的先执行:对于并列的,靠上的先执行。
相关推荐
"Oracle 执行计划详解" Oracle 执行计划是数据库性能优化的关键。为了更好地理解和优化 Oracle 数据库的执行计划,我们需要了解执行计划的生成过程、优化方法和执行计划的解读方法。 执行计划生成过程 执行计划的...
Oracle执行计划参数解释,Oracle SQL优化的基础是看懂Oracle的执行计划,本文当系统整理了Oracle执行计划里面的各种参数。
### Oracle如何使用AUTOTRACE查看执行计划 在Oracle数据库管理中,查看SQL语句的执行计划是一项重要的技能,这有助于优化查询性能、诊断性能问题等。AUTOTRACE是Oracle提供的一种强大的工具,用于自动展示SQL语句的...
Oracle 执行计划解读 Oracle 执行计划是一种查询执行路径的表示形式,它展示了 Oracle 数据库在执行查询时访问数据的路径。下面是 Oracle 执行计划的详细解读,包括执行计划的定义、访问数据的方式、执行计划层次...
### Oracle执行计划分析 #### 一、概述 在Oracle数据库管理中,优化SQL查询性能是一项至关重要的任务。其中,理解并分析SQL执行计划是提升查询效率的关键步骤之一。执行计划是指Oracle数据库根据特定的SQL语句所...
oracle 执行计划详解 Oracle 执行计划是数据库性能调整的关键部分,对于想要学习 Oracle 数据库的朋友非常有帮助。下面是Oracle 执行计划的背景知识和重要概念。 共享 SQL 语句 Oracle 将 SQL 语句及解析后得到的...
Oracle执行计划详解,包括oracle执行顺序和索引详细介绍
总之,Oracle执行计划的稳定性与数据库性能紧密相关,理解并掌握优化器的工作原理以及如何控制执行计划的选择,是优化数据库性能的关键。在基于代价的优化器模式下,虽然存在执行计划不稳定的可能,但通过合理管理和...
Oracle执行计划是数据库管理系统在处理SQL语句时的预估工作流程,它是Oracle优化器根据当前数据分布、索引情况和系统资源等信息选择的最佳执行策略。了解和分析执行计划对于提升SQL语句的性能至关重要。 一、生成...
通过深入理解Oracle执行计划的查看、控制和优化方法,数据库管理员和开发人员能够更有效地管理数据库性能,确保在不同场景下都能获得最佳的查询效率。此外,合理利用HINT和OUTLINE不仅能提升单个查询的速度,还能...
执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述。1:在PL/SQL下按F5查看执行计划。第三方工具toad等。很多人以为PL/SQL的执行计划只能看到基数、优化器、耗费等基本信息,其实这个可以在PL/SQL工具里面...
本文将深入探讨Oracle的执行计划和表分区两个重要概念,以及它们如何影响数据库性能。 执行计划是Oracle数据库处理SQL查询的一种步骤序列,它详细描述了数据如何从表中提取、如何进行排序或聚合,以及如何返回到...
Oracle 执行计划是数据库管理系统在处理SQL查询时制定的一系列步骤,用于高效地检索和处理数据。它是Oracle数据库优化器(Optimizer)根据统计信息、成本估算和已存在的索引等信息生成的。优化器有两种主要的工作...
执行计划揭示了Oracle如何处理一个SQL查询,包括数据的访问路径、使用的索引、排序方式以及表之间的连接顺序等。本文将深入探讨如何查看执行计划,并提供优化SQL的策略。 一、执行计划的概念 执行计划是Oracle...
除了以上概念,Oracle执行计划还包括其他访问方法,如索引扫描(Index Scan)、索引唯一扫描(Index Unique Scan)、索引快速全扫描(Index Fast Full Scan)以及各种类型的连接操作,如嵌套循环(Nested Loop)、...
当查看执行计划时,右侧最顶层的操作是第一个被执行的。同一级别上,如果某个操作没有子 ID,則它将首先被执行。 简单的例子 例如,以下是一个简单的执行计划: Query Plan ------------------------------------...
本文档详细解释了 ORACLE 的执行计划背景知识,包括共享 SQL 语句、执行计划的存储和共享、绑定变量的使用、执行计划的生成和共享、执行计划的优化等方面的内容。 一、共享 SQL 语句 ORACLE 对相同的 SQL 语句进行...
oracle执行计划详细解释