ORACLE 11g DBM_SPM固定一个SQL多个执行计划

本文介绍了如何在Oracle 11g中使用DBMS_SPM包来固定一个SQL的执行计划,通过步骤展示从创建测试环境到执行计划的固定,以及验证固定效果的过程。
摘要由CSDN通过智能技术生成

1.几个关于SQL查询视图以及dbms包介绍

V$SQL                # 列出共享SQL区未group by的统计信息,每个输入的SQL的子游标都包含一行,在SQL执行结束之后更新,但是对于长时间运行的SQL,每5秒更新一次。
V$SQL_SHARED_CURSOR  # 解释了为什么一个子游标没有与已经存在的游标共享,每一列都确定了特定的未共享的原因,address字段关联v$sqlarea address字段。
V$SQLAREA            # 共享SQL区中每个SQL字符串都对应一行统计信息,提供了SQL语句包括内存中,已经解析的,准备执行的,有version_count字段可以查看父游标有多少版本子游标。
V$SQLAREA_PLAN_HASH  # 展示了V$SQL通过sql_id、plan_hash_value分组后的统计信息,一个父游标可能由于不同的plan_hash_value有多行信息。

DBMS_XPLAN.DISPLAY_CURSOR    #This table function displays the explain plan of any cursor loaded in the cursor cache.In addition to the explain plan, various plan statistics (such as. I/O, memory and timing) can be reported (based on the V$SQL_PLAN_STATISTICS_ALL VIEWS).

DBMS_XPLAN.DISPLAY_AWR       #This table function displays the contents of an execution plan stored in the AWR.AWR中可能会因为采样率问题导致AWR中没有需要的SQL执行计划,可以通过DBMS_WORKLOAD_REPOSITORY.add_colored_sql函数指定采样特定SQL语句或者使用调整采样值dbms_workload_repository.modify_snapshot_settings(topnsql => '参数值');

2.构造测试环境

(1)创建测试表:

CREATE TABLE fundinfo
(PLANID VARCHAR2(40),
NAME VARCHAR2(40),
IDTYPE VARCHAR2(20),
IDNO VARCHAR2(40),
ACC VARCHAR2(10),
PORT  VARCHAR2(20),
MONEY NUMBER(21,11),
AMUNT NUMBER(21,11),
STATE VARCHAR2(30)
);

# 插入准备好的38w条数据,数据来源于生产环境。

CREATE INDEX FUNDINFO_PLANID ON FUNDINFO(PLANID);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值