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);