Oracle 性能调优之:使用 V$SQL_PLAN 视图查询内存中的执行计划

摘要:
V$SQL_ PLAN视图提供了一种检查仍在库缓存中的游标执行PLAN的方法。然而,EXPLAINPLAN显示了在执行相应语句时可以使用的理论,而V$SQL_PLAN包含了实际使用的计划。V$SQL_ PLAN表可用于查看同一语句的不同子游标的不同计划。V$SQL_ PLAN的列此视图几乎包含PLAN_TABLE中的所有列,包括一些其他列。注意:V$SSESSION中的SQL从OracleDatabase10g_HASH_VALUE开始,它是SQL_ID,可以在许多其他V$视图中检索到。

V$SQL_PLAN视图提供了一种方法,可用于检查仍位于库高速缓存的游标的执行计划。此视图中的信息与 PLAN_TABLE 视图中的信息非常类似。但是,EXPLAIN PLAN 显示的是执行相应语句时可以使用的理论,而V$SQL_PLAN 包含实际使用的计划。通过 EXPLAIN PLAN 语句获取的执行计划与用来执行游标的执行计划可能有所不同。原因在于,也许已经用不同的会话参数值编译了游标。

V$SQL_PLAN 显示一个游标的计划,并非与一个 SQL 语句相关联的所有游标的计划。区别在于,一个 SQL 语句可能包含多个与其相关联的游标,而每个游标都由 CHILD_NUMBER 标识。例如,如果某语句引用的对象在不同方案中,那么,不同用户执行此同一语句时所关联的游标会不同。同样,不同的提示会导致不同的游标。V$SQL_PLAN 表可用于查看同一语句不同子游标的不同计划。

注:另一有用的视图是 V$SQL_PLAN_STATISTICS,此视图为每个缓存的游标的执行计划中的每项操作提供执行统计信息。另外,V$SQL_PLAN_STATISTICS_ALL 视图将 V$SQL_PLAN 中的信息与 V$SQL_PLAN_STATISTICS 和 V$SQL_WORKAREA 中的执行统计信息连接在一起。

 Oracle 性能调优之:使用 V$SQL_PLAN 视图查询内存中的执行计划第1张

V$SQL_PLAN 的列

此视图几乎包含 PLAN_TABLE 中的所有列,还包含其它一些列。与 PLAN_TABLE 共有的列具有相同的值:

ADDRESS

HASH_VALUE

可以使用 ADDRESS 和HASH_VALUE 列与 V$SQLAREA 联接,以便添加特定于游标的信息。

可以使用 ADDRESS、HASH_VALUE 和 CHILD_NUMBER 列与 V$SQL 联接,以便添加特定于子游标的信息。

PLAN_HASH VALUE 列是游标的 SQL 计划的数字表达形式。通过比较两个计划的 PLAN_HASH_VALUE,可以轻松地确定这两个计划是否相同(而不必逐行比较这两个计划)。

注:从 Oracle Database 10g 起,V$SESSION 中的 SQL_HASH_VALUE 被 SQL_ID 取代,在许多其它V$ 视图中都可以检索出后者。SQL_HASH_VALUE 是 32 位的值,在存储 AWR 数据的大型资料档案库中,使用它不足以唯一地标识对象。SQL_ID 是 64 位的散列值,唯一性更高,其中的后 32 位为 SQL_HASH_VALUE。通常用字符串表示该值,以便简化管理。

摘自:http://www.databi.cn/article-62-1.html

免责声明:文章转载自《Oracle 性能调优之:使用 V$SQL_PLAN 视图查询内存中的执行计划》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇cocos creator 倒计时codeJavaScript可视化运行工具推荐下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

游标(隐式游标与显示游标)

游标的概念:    游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库。这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率。游标有两种类型:显式游标和隐式游标。在前述程序中用到的SE...

sysbench对oracle进行压力测试

Sysbench压测Oracle 1.安装 1.1.下载sysbench安装包 mysql官网:sysbench下载 github下载:sysbench下载 digoal收藏:sysbench下载 sysbench 0.5以上版本不再支持Oracle,因此如果需要压测Oracle,需要下载sysbench 0.5版本 1.2.安装Oracle客户端 1....

Centos7下oracle配置(详细)

一、硬件配置 CentOS7@VMware® Workstation 15 Pro,分配资源:CPU:2颗,内存:4GB,硬盘空间:30GB 二、软件准备  linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip SecureCRT 三、虚拟机的配置 挂载镜像,配置本地yum源...

oracle 创建dblink

CREATE database link test_dblinkCONNECT TO sjzx IDENTIFIED BY sjzxUSING '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.176.150.201)(PORT = 1521)))(CONNECT_DAT...

Oracle 12c 分片(Sharding)技术

Sharding特点 Oracle12c Sharding技术实现了跨数据库级别的数据分片,实现了分布式IO大数据扩展的云数据库架构体系,可满足大数据海量存储、分布式数据读写以及满足Scale Out/ScaleUp扩展性需求。Sharding的主要特点: 线性伸缩性(Scale out):Sharding技术减少性能瓶颈,同时可以通过添加Shard节点...

Oracle中merge into的使用

该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据. ORACLE 9i 中,使用此命令必须同时指定UPDATE 和INSERT 关键词,ORACLE 10g 做了如下改动。 1,insert 和update是可选的 2,UPDATE 和INSERT 后面可以跟WHERE 子句 3,在ON条件中可以使用常量来insert 所有的行到目标表中,...