一、通过PL/SQL Dev工具
1、直接File->New->Explain Plan Window,在窗口中执行sql可以查看计划结果。其中,Cost表示cpu的消耗,单位为n%,Cardinality表示执行的行数,等价Rows。
2、先执行 EXPLAIN PLAN FOR select * from tableA where paraA=1,再 select * from table(DBMS_XPLAN.DISPLAY)便可以看到oracle的执行计划了,看到的结果和1中的一样,所以使用工具的时候推荐使用1方法。
注意:PL/SQL Dev工具的Command window中不支持set autotrance on的命令。还有使用工具方法查看计划看到的信息不全,有些时候我们需要sqlplus的支持。
二、通过sqlplus
1.最简单的办法
Sql> set autotrace on
Sql> select * from dual;
执行完语句后,会显示explain plan 与 统计信息。
这个语句的优点就是它的缺点,这样在用该方法查看执行时间较长的sql语句时,需要等待该语句执行成功后,才返回执行计划,使优化的周期大大增长。如果不想执行语句而只是想得到执行计划可以采用:
Sql> set autotrace traceonly
这样,就只会列出执行计划,而不会真正的执行语句,大大减少了优化时间。虽然也列出了统计信息,但是因为没有执行语句,所以该统计信息没有用处,如果执行该语句时遇到错误,解决方法为:
(1)在要分析的用户下:
Sqlplus > @ ?
dbmsadminutlxplan.sql
(2) 用sys用户登陆
Sqlplus > @ ?sqlplusadminplustrce.sql
Sqlplus > grant plustrace to user_name;
- - user_name是上面所说的分析用户
2.用explain plan命令
(1) sqlplus > explain plan for select * from testdb.myuser
(2) sqlplus > select * from table(dbms_xplan.display);
上面这2种方法只能为在本会话中正在运行的语句产生执行计划,即我们需要已经知道了哪条语句运行的效率很差,我们是有目的只对这条SQL语句去优化。其实,在很多情况下,我们只会听一个客户抱怨说现在系统运行很慢,而我们不知道是哪个SQL引起的。此时有许多现成的语句可以找出耗费资源比较多的语句,如:
SELECT ADDRESS, substr(SQL_TEXT,1,20) Text, buffer_gets, executions,
buffer_gets/executions AVG FROM v$sqlarea
WHERE executions>0 AND buffer_gets > 100000 ORDER BY 5;
ADDRESS TEXT BUFFER_GETS EXECUTIONS AVG
-------- ---------------------------------------- ----------- ---------- ------------------------------------------------------------
66D83D64 select t.name, (sel 421531 60104 7.01336017
66D9E8AC select t.schema, t.n 1141739 2732 417.913250
66B82BCC select s.synonym_nam 441261 6 73543.5
从而对找出的语句进行进一步优化。当然我们还可以为一个正在运行的会话中运行的所有SQL语句生成执行计划,这需要对该会话进行跟踪,产生trace文件,然后对该文件用tkprof程序格式化一下,这种得到执行计划的方式很有用,因为它包含其它额外信息,如SQL语句执行的每个阶段(如Parse、Execute、Fetch)分别耗费的各个资源情况(如CPU、DISK、elapsed等)。
分享到:
相关推荐
在深入了解Oracle执行计划之前,我们先来了解一下几个重要的概念,这些概念对于理解执行计划至关重要。 **共享SQL语句**:为了提高性能并减少资源消耗,Oracle在第一次解析某个SQL语句后,会将其以及相应的执行计划...
本篇文章将详细介绍在Java中连接Oracle数据库的几种常见方法,以及相关的源码示例。 1. JDBC-ODBC桥连接: JDBC-ODBC桥是Java早期连接数据库的一种方式,它依赖于操作系统上的ODBC数据源。首先,你需要在系统中...
Oracle执行计划是数据库执行SQL语句前确定的操作步骤序列。优化器根据表的统计信息、存储参数、可用的执行路径等生成执行计划,以实现最快的查询速度。执行计划通常用一系列数据库操作符来表示,这些操作符及其顺序...
本篇文章将深入探讨如何使用PL/SQL来查看和理解Oracle的执行计划,以及优化器的工作原理。 首先,Oracle的优化方式主要有两种:规则基础优化(RBO,Rule-Based Optimization)和成本基础优化(CBO,Cost-Based ...
在Oracle中获取执行计划有多种方法,以下是几种常见的方法: 1. 使用EXPLAIN PLAN语句:这是一种常用的方法,用户可以通过执行EXPLAIN PLAN语句,然后查询输出表来获取SQL语句的执行计划。例如,使用EXPLAIN PLAN ...
Oracle 执行计划是数据库管理系统中的一种机制,用于优化 SQL 语句的执行效率。执行计划是 Oracle 内部的机器级代码,决定如何访问存储器,得到需要的结果集。执行计划的主要内容包括访问方式、访问顺序等。 执行...
在 Oracle 中,执行计划可以通过 EXPLAIN PLAN 语句来查看,或者使用 AUTOTRACE 选项来显示执行计划。执行计划通常包括以下几部分: 1. 查询语句:这是用户提交的查询语句。 2. 执行计划:这是数据库根据查询语句和...
在Oracle中,可以通过两种主要的方式查看执行计划:使用EXPLAIN PLAN命令和查询V$SQL_PLAN视图。EXPLAIN PLAN命令能够提供一条SQL语句的执行计划,但它不会实际执行这条语句。V$SQL_PLAN视图则提供了一个游标已编译...
以下是对Oracle中获取执行计划的几种方法的详细分析: 1. 预估执行计划(Explain Plan) 使用`EXPLAIN PLAN`可以预先查看SQL语句的执行计划,而不实际执行SQL。首先,你需要在SQL语句前加上`EXPLAIN PLAN FOR`,...
逻辑上,Oracle使用以下几种方法来定位需要读取的数据: 1. **全表扫描 (Full Table Scan, FTS)**:这是一种逐行读取整个表的方法,通常用于表较小或者没有合适的索引可用的情况。在执行全表扫描时,Oracle会从表的...
Oracle数据库的执行计划选择机制有两种:基于成本(Cost-Based Optimizer,CBO)和基于规则(Rule-Based Optimizer,RBO)。CBO是默认的执行计划选择器,它根据统计信息计算每个可能的执行计划的成本,并选择成本...
SQL SERVER 连接 Oracle 数据库几种方法 在实际开发中,我们经常需要在 SQL Server 中连接 Oracle 数据库,以便实现数据交换和集成。那么,如何在 SQL Server 中连接 Oracle 数据库呢?下面我们将介绍几种常见的...
【Oracle执行计划详解】 Oracle执行计划是数据库管理系统为了执行SQL查询语句而制定的一种操作策略。它是Oracle数据库在处理查询时的一个详细步骤列表,描述了数据如何被访问、如何进行排序、合并以及如何返回给...
### VC_中连接Oracle数据库的几种方法 #### 引言 随着信息技术的不断发展,数据库管理系统在各类信息系统中的地位越来越重要。Oracle数据库作为一种广泛使用的数据库系统,以其强大的功能、优秀的性能及高安全性...
可以通过以下几种方式来调整优化器模式: - **实例级别**:通过初始化参数 `OPTIMIZER_MODE` 设置全局优化器模式。 - **会话级别**:使用 SQL 命令 `ALTER SESSION SET OPTIMIZER_MODE = <mode>` 修改当前会话的...
### crond 执行ORACLE rman备份脚本失败的几种情况及解决 在日常的数据库管理工作中,通过Linux系统的crond来安排Oracle RMAN备份任务是一种常见的做法。然而,在实际操作过程中,有时会遇到crond无法正常执行...
### 基于Web访问Oracle数据库的几种方法 在当今数字化时代,Web访问数据库成为企业和组织数据管理和交互的重要方式之一。Oracle数据库以其卓越的性能、安全性以及广泛的兼容性,在众多数据库系统中脱颖而出,尤其受...