2015-05-28 Created By BaoXinjian

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAIAAAAf7rriAAABHklEQVQ4jc3Tv0sCcRjH8Wc4/wL9H4T0P3CpXYQcHQpuFIQayjvXQrnulhosHDpQsBZB8Q9wuWu1QVBcbMtNyaAm3y0e/fC4Lmvo4bO++D6fB74CLJdPm0X+MRaRn2HuowziDFNMVBFhajDvsHB4GYXBMQZxRikeVBHh0WDeDo+jKzz5gJ8dXjfAU4NZm4UbEse+4uC1qVYplSgU2Ntf4aHXeXrGLBjX65TLaEXyeTIZdrYjCskEIpLdRdMwTWybOxc/3GpxfsHpCUfH5HKk0xGF5JaHi1gm9jWuP3Ycbm+o1bAsDg9Q1U9YC8b9Pt0uzSZXl/LdrOHxmF6PTodGg0oFXY8oJLzOuveyf+f1vB8si17EDFj7zz5GyPwKvwECQrZ4yvBSdAAAAABJRU5ErkJggg==" alt="" />一、摘要


1. 应用场景

当运行很久的Job突然出现性能问题时,并排除数据量突然变大,可能原因有执行的脚本的某些对应的SQL的解析计划变更

2. 解决步骤

Step1. 通过对应的User或者其他信息查找Session ID

Step2. 通过Session_ID查看该SQL_ID历史的解析计划变换

Step3. 如果最近发生解析计划变更,并导致效率变慢,通过SPM绑定之前的解析计划

Step4. 确定解析计划是否绑定

Step5. 如果脚本还在运行,让客户停掉脚本,并重新运行,以测试绑定的新的解析计划是否满足期望

Step6. 如果绑定的解析计划并不能解决性能问题,验证后将其删除

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAIAAAAf7rriAAABHklEQVQ4jc3Tv0sCcRjH8Wc4/wL9H4T0P3CpXYQcHQpuFIQayjvXQrnulhosHDpQsBZB8Q9wuWu1QVBcbMtNyaAm3y0e/fC4Lmvo4bO++D6fB74CLJdPm0X+MRaRn2HuowziDFNMVBFhajDvsHB4GYXBMQZxRikeVBHh0WDeDo+jKzz5gJ8dXjfAU4NZm4UbEse+4uC1qVYplSgU2Ntf4aHXeXrGLBjX65TLaEXyeTIZdrYjCskEIpLdRdMwTWybOxc/3GpxfsHpCUfH5HKk0xGF5JaHi1gm9jWuP3Ycbm+o1bAsDg9Q1U9YC8b9Pt0uzSZXl/LdrOHxmF6PTodGg0oFXY8oJLzOuveyf+f1vB8si17EDFj7zz5GyPwKvwECQrZ4yvBSdAAAAABJRU5ErkJggg==" alt="" />二、步骤


Step1. 通过对应的User或者其他信息查找Session ID

select sql_id, username, osuser, machine, program
from v$session
where username = 'gavin'

Step2. 查看该SQL_ID历史的解析计划变换

select distinct a.instance_number,
trunc(b.begin_interval_time, 'mi'),
sql_id,
plan_hash_value
from dba_hist_sqlstat a, dba_hist_snapshot b
where a.snap_id = b.snap_id
and sql_id = '089dbukv1aanh'
order by 2, 1

Step3. 如果最近发生解析计划变更,并导致效率变慢,通过SPM绑定之前的解析计划 (脚本coe_xfr_sql_baseline.sql)

SQL>@D:\Gavin\coe_xfr_sql_baseline.sql

Parameter 1:
SQL_ID (required) Enter value for 1: 089dbukv1aanh SNAP_DATE SQL_ID PLAN_HASH_VALUE
--------------- ------------- --------------------
2015/05/20 089dbukv1aanh 1388734953
2015/05/21 089dbukv1aanh 1388734953
2015/05/22 089dbukv1aanh 1388734953
2015/05/23 089dbukv1aanh 1388734953
2015/05/24 089dbukv1aanh 1388734953
2015/05/25 089dbukv1aanh 1388734953
2015/05/26 089dbukv1aanh 1388734953
2015/05/27 089dbukv1aanh 1388734953
2015/05/28 089dbukv1aanh 1388734953 Parameter 2:
PLAN_HASH_VALUE (required) Enter value for 2: 1388734953 Values passed to coe_xfr_sql_baseline:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SQL_ID: "089dbukv1aanh"
PLAN_HASH_VALUE: "1388734953" SQL>SET ECHO OFF;
SQL tuning set SS_089dbukv1aanh_1388734953 created. SQLSET_NAME SQLSET_OWNER SQL_ID PLAN_HASH_VALUE
------------------------------ ------------------------------ ------------------------------ -------
SS_089dbukv1aanh_1388734953 GAVIN 089dbukv1aanh 1388734953
Plans Loaded: 1
sys_sql_handle: "SYS_SQL_70445f05461a3cd3"
sys_plan_name: "SQL_PLAN_70j2z0p31ng6m125daea2"
1 plan(s) modified description: "SQL_ID: 089DBUKV1AANH PLAN HASH VALUE: 1388734953 CREATED BY COE_XF
SQL tuning set SS_089dbukv1aanh_1388734953 dropped.
SQL>REM
SQL>REM SQL Plan Baseline
SQL>REM ~~~~~~~~~~~~~~~~~
SQL>REM
SQL>SELECT signature, sql_handle, plan_name, enabled, accepted, fixed--, reproduced (avail on 11.2.0
2 FROM dba_sql_plan_baselines WHERE plan_name = :plan_name; SIGNATURE SQL_HANDLE PLAN_NAME ENA ACC FIX
-------------------- ------------------------------ ------------------------------ --- --- ---
8089695306919853267 SYS_SQL_70445f05461a3cd3 SQL_PLAN_70j2z0p31ng6m125daea2 YES YES YES
SQL>
SQL>col description for a100
SQL>SELECT description
2 FROM dba_sql_plan_baselines WHERE plan_name = :plan_name; DESCRIPTION
----------------------------------------------------------------------------------------------------
SQL_ID: 089DBUKV1AANH PLAN HASH VALUE: 1388734953 CREATED BY COE_XFR_SQL_BASELINE.SQL
SQL>SET ECHO OFF; coe_xfr_sql_baseline completed. 

Step4. 确定解析计划是否绑定

select sql_handle, plan_name, sql_text, creator, description, enabled, accepted, fixed
from dba_sql_plan_baselines
where description like '%089dbukv1aanh%'

Step5. 如果脚本还在运行,让客户停掉脚本,并重新运行,以测试绑定的新的解析计划是否满足期望

alter system disconnect session '102,102' immediate; 

Step6. 如果绑定的解析计划并不能解决性能问题,验证后将其删除

declare
l_plan number;
begin
l_plan := dbms_spm.drop_sql_plan_baseline('SYS_SQL_70445f05461a3cd3', 'SQL_PLAN_70j2z0p31ng6m125daea2');
dbms_output.put_line('l_pan=' || l_plan);
end;

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAIAAAAf7rriAAABHklEQVQ4jc3Tv0sCcRjH8Wc4/wL9H4T0P3CpXYQcHQpuFIQayjvXQrnulhosHDpQsBZB8Q9wuWu1QVBcbMtNyaAm3y0e/fC4Lmvo4bO++D6fB74CLJdPm0X+MRaRn2HuowziDFNMVBFhajDvsHB4GYXBMQZxRikeVBHh0WDeDo+jKzz5gJ8dXjfAU4NZm4UbEse+4uC1qVYplSgU2Ntf4aHXeXrGLBjX65TLaEXyeTIZdrYjCskEIpLdRdMwTWybOxc/3GpxfsHpCUfH5HKk0xGF5JaHi1gm9jWuP3Ycbm+o1bAsDg9Q1U9YC8b9Pt0uzSZXl/LdrOHxmF6PTodGg0oFXY8oJLzOuveyf+f1vB8si17EDFj7zz5GyPwKvwECQrZ4yvBSdAAAAABJRU5ErkJggg==" alt="" />三、代码


Oracle Metalink下载代码 - ce_xfr_sql_baseline.sql

SPO coe_xfr_sql_baseline.log;
SET DEF ON TERM OFF ECHO ON FEED OFF VER OFF HEA ON LIN 2000 PAGES 100 LONG 8000000 LONGC 800000 TRIMS ON TI OFF TIMI OFF SERVEROUT ON SIZE 1000000 NUM 20 SQLP SQL>;
SET SERVEROUT ON SIZE UNL;
REM
REM Created according to coe_load_sql_baseline.sql and MOS note 789888.1 2013/06/10
REM
REM AUTHOR
REM gavin.bao
REM
REM SCRIPT
REM coe_xfr_sql_baseline.sql
REM
REM DESCRIPTION
REM This script loads a plan from AWR into the SQL
REM Plan Baseline of the specified SQL.
REM
REM PRE-REQUISITES
REM 1. Have in AWR the text for the specified SQL.
REM
REM PARAMETERS
REM 1. SQL_ID (required)
REM 2. PLAN_HASH_VALUE in AWR (required)
REM
REM EXECUTION
REM 1. Connect into SQL*Plus as user with access to data dictionary
REM and privileges to create SQL Plan Baselines. Do not use SYS.
REM 2. Execute script coe_xfr_sql_baseline.sql passing first two
REM parameters inline or until requested by script.
REM
REM EXAMPLE
REM # sqlplus system
REM SQL> START coe_xfr_sql_baseline.sql gnjy0mn4y9pbm b8f3mbkd8bkgh
REM SQL> START coe_xfr_sql_baseline.sql;
REM
REM NOTES
REM 1. This script works on 11g or higher.
REM 2. For a similar script for 10g use coe_xfr_sql_profile.sql,
REM which uses custom SQL Profiles instead of SQL Baselines.
REM 3. For possible errors see coe_xfr_sql_baseline.log
REM 4. Use a DBA user but not SYS. Do not connect as SYS as the staging
REM table cannot be created in SYS schema and you will receive an error:
REM ORA-19381: cannot create staging table in SYS schema
REM
SET TERM ON ECHO OFF;
PRO
PRO Parameter 1:
PRO SQL_ID (required)
PRO
DEF sql_id = '&1';
PRO
col SNAP_DATE for a15
select distinct to_char(trunc(b.BEGIN_INTERVAL_TIME),'yyyy/mm/dd') SNAP_DATE,SQL_ID,PLAN_HASH_VALUE
from dba_hist_sqlstat a,dba_hist_snapshot b
where SQL_ID=TRIM('&&sql_id.')
and a.snap_id=b.snap_id order by 1;
PRO
PRO Parameter 2:
PRO PLAN_HASH_VALUE (required)
PRO
DEF plan_hash_value = '&2';
PRO
PRO Values passed to coe_xfr_sql_baseline:
PRO ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PRO SQL_ID: "&&sql_id."
PRO PLAN_HASH_VALUE: "&&plan_hash_value."
PRO
WHENEVER SQLERROR EXIT SQL.SQLCODE;
SET TERM OFF ECHO ON; -- trim parameters
COL sql_id NEW_V sql_id FOR A30;
COL plan_hash_value NEW_V plan_hash_value FOR A30;
SELECT TRIM('&&sql_id.') sql_id, TRIM('&&plan_hash_value.') plan_hash_value FROM DUAL; -- open log file
SPO coe_xfr_sql_baseline_&&sql_id..log;
GET coe_xfr_sql_baseline.log;
. -- get user
COL connected_user NEW_V connected_user FOR A30;
SELECT USER connected_user FROM DUAL; VAR sql_text CLOB;
VAR plan_name VARCHAR2(30);
VAR b_snap_id NUMBER;
VAR e_snap_id NUMBER;
VAR ss_name VARCHAR2(100);
EXEC :sql_text := NULL;
EXEC :plan_name := NULL;
EXEC :b_snap_id := NULL;
EXEC :e_snap_id := NULL;
EXEC :ss_name := 'SS_'||TRIM('&&sql_id.')||'_'||TRIM('&&plan_hash_value.'); -- get sql_text from awr
BEGIN
SELECT REPLACE(sql_text, CHR(00), ' ')
INTO :sql_text
FROM dba_hist_sqltext
WHERE sql_id = TRIM('&&sql_id.')
AND sql_text IS NOT NULL
AND ROWNUM = 1;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('getting sql_text from awr: '||SQLERRM);
:sql_text := NULL;
END;
/ -- sql_text as found
SELECT :sql_text FROM DUAL; -- check is sql_text for sql is available
SET TERM ON;
SET ECHO OFF;
BEGIN
IF :sql_text IS NULL THEN
RAISE_APPLICATION_ERROR(-20100, 'SQL_TEXT for SQL_ID &&sql_id. was not found in AWR (dba_hist_sqltext).');
END IF;
END;
/ -- get snap id
DECLARE
l_count NUMBER;
BEGIN
SELECT min(SNAP_ID), max(SNAP_ID)
INTO :b_snap_id, :e_snap_id
FROM dba_hist_sqlstat
WHERE sql_id = TRIM('&&sql_id.')
AND plan_hash_value = TO_NUMBER(TRIM('&&plan_hash_value.')); IF (:b_snap_id is null or :e_snap_id is null) THEN
RAISE_APPLICATION_ERROR(-20110, 'PHV &&plan_hash_value. for SQL_ID &&sql_id. was not be found in AWR (dba_hist_sqlstat).');
END IF;
END;
/ DECLARE
--ss_name VARCHAR2(100) default 'SS_'||TRIM('&&sql_id.')||'_'||TRIM('&&plan_hash_value.');
baseline_ref_cursor DBMS_SQLTUNE.SQLSET_CURSOR;
BEGIN
-- create sql_plan_baseline for sql using plan from AWR
DBMS_SQLTUNE.CREATE_SQLSET(:ss_name);
open baseline_ref_cursor for
select VALUE(p) from
table(DBMS_SQLTUNE.SELECT_WORKLOAD_REPOSITORY(:b_snap_id, :e_snap_id,
'sql_id='||CHR(39)||TRIM('&&sql_id.')||CHR(39)||
' and plan_hash_value='||TRIM('&&plan_hash_value.'),
NULL,NULL,NULL,NULL,NULL,NULL,'ALL')) p;
DBMS_SQLTUNE.LOAD_SQLSET(:ss_name, baseline_ref_cursor);
DBMS_OUTPUT.PUT_LINE('SQL tuning set '||:ss_name||' created.');
END;
/ -- display details of the SQL tuning set
col PLAN_HASH_VALUE clear
select SQLSET_NAME,SQLSET_OWNER,SQL_ID,PLAN_HASH_VALUE from dba_sqlset_statements where sqlset_name = :ss_name ; -- load the plan from SQL tuning set into baseline
declare
plans NUMBER;
description VARCHAR2(500);
sys_sql_handle VARCHAR2(30);
sys_plan_name VARCHAR2(30);
begin
plans := dbms_spm.load_plans_from_sqlset(sqlset_name => :ss_name,
sqlset_owner => USER,
fixed => 'YES',
enabled => 'YES');
commit;
DBMS_OUTPUT.PUT_LINE('Plans Loaded: '||plans); -- find handle and plan_name for sql_plan_baseline just created
SELECT sql_handle, plan_name
INTO sys_sql_handle, sys_plan_name
FROM dba_sql_plan_baselines
WHERE creator = USER
AND origin = 'MANUAL-LOAD'
AND created = ( -- past 1 minute only
SELECT MAX(created) max_created
FROM dba_sql_plan_baselines
WHERE creator = USER
AND origin = 'MANUAL-LOAD'
AND created > SYSDATE - (1/24/60));
DBMS_OUTPUT.PUT_LINE('sys_sql_handle: "'||sys_sql_handle||'"');
DBMS_OUTPUT.PUT_LINE('sys_plan_name: "'||sys_plan_name||'"'); :plan_name := sys_plan_name; -- update description of new sql_plan_baseline
description := UPPER('SQL_ID: '||TRIM('&&sql_id.')||' Plan Hash Value: '||TRIM('&&plan_hash_value.')||' created by coe_xfr_sql_baseline.sql');
plans :=
DBMS_SPM.ALTER_SQL_PLAN_BASELINE (
sql_handle => sys_sql_handle,
plan_name => sys_plan_name,
attribute_name => 'description',
attribute_value => description );
DBMS_OUTPUT.PUT_LINE(plans||' plan(s) modified description: "'||description||'"'); DBMS_SQLTUNE.DROP_SQLSET(:ss_name);
DBMS_OUTPUT.PUT_LINE('SQL tuning set '||:ss_name||' dropped.');
end;
/ -- display details of new sql_plan_baseline
SET ECHO ON;
REM
REM SQL Plan Baseline
REM ~~~~~~~~~~~~~~~~~
REM
SELECT signature, sql_handle, plan_name, enabled, accepted, fixed--, reproduced (avail on 11.2.0.2)
FROM dba_sql_plan_baselines WHERE plan_name = :plan_name; col description for a100
SELECT description
FROM dba_sql_plan_baselines WHERE plan_name = :plan_name;
SET ECHO OFF;
PRO
SPO OFF;
WHENEVER SQLERROR CONTINUE;
SET DEF ON TERM ON ECHO OFF FEED 6 VER ON HEA ON LIN 80 PAGES 14 LONG 80 LONGC 80 TRIMS OFF TI OFF TIMI OFF SERVEROUT OFF NUM 10 SQLP SQL>;
SET SERVEROUT OFF;
UNDEFINE 1 2 sql_id plan_hash_value
CL COL
PRO
PRO coe_xfr_sql_baseline completed.

Thanks and Regards

aaarticlea/png;base64,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" alt="" />

PLSQL_性能优化系列18_Oracle Explain Plan解析计划通过Baseline绑定的更多相关文章

  1. PLSQL_性能优化系列19_Oracle Explain Plan解析计划通过Profile绑定

    20150529 Created By BaoXinjian

  2. PLSQL_性能优化系列15_Oracle Explain Plan解析计划解读

    2014-12-19 Created By BaoXinjian

  3. PLSQL_性能优化系列14_Oracle High Water Level高水位分析

    2014-10-04 Created By BaoXinjian 一.摘要 PLSQL_性能优化系列14_Oracle High Water Level高水位分析 高水位线好比水库中储水的水位线,用于 ...

  4. PLSQL_性能优化系列16_Oracle Tuning Analyze优化分析

    2014-12-23 Created By BaoXinjian

  5. PLSQL_性能优化系列01_Oracle Index索引

    2014-06-01 Created By BaoXinjian

  6. PLSQL_性能优化系列17_Oracle Merge Into和Update更新效率

    2015-05-21 Created By BaoXinjian 一.摘要 以前只考虑 merge into 只是在特定场合下方便才使用的,今天才发现,merge into 竟然会比 update 在 ...

  7. PLSQL_性能优化系列09_Oracle Partition Table数据分区表

    2014-08-22 Created By BaoXinjian

  8. PLSQL_性能优化系列07_Oracle Parse Bind Variables解析绑定变量

    2014-09-25 Created By BaoXinjian

  9. PLSQL_性能优化系列06_Oracle Soft Parse / Hard Parse软硬解析

    2014-08-11 Createed By BaoXinjian

随机推荐

  1. POJ 3928 Ping pong(树状数组)

                                                                          Ping pong Time Limit: 1000MS   ...

  2. HDU-4455 Substrings(DP)

    题目大意:给一个长度为n的整数序列,定义egg(i,j)表示区间[i,j]中不同的数的个数.q次询问,每次询问x,表示求所有长度为x连续区间的 egg 之和. 题目分析:定义dp(len)表示所有长度 ...

  3. poj2553 强连通

    题意:定义了一个图的底(bottom),是指在一个图中能够被所有点到达的点,问途中有哪些点是图的底. 首先是同一个强连通分量中的点都能够互相到达,强连通分量中一个点能到达其他点,也必然代表该强连通分量 ...

  4. ExtJS Panel主要配置列表

    Ext.panel.Panel 属性 值 描述 animCollapse Boolean 设置面板折叠展开是否显示动画,Ext.Fx可用默认true,否则false applyTo Mixed 面板定 ...

  5. nginx配置说明

    #user nobody; worker_processes ; #error_log logs/error.log; #error_log logs/error.log notice; #error ...

  6. Docker Resources

    Menu Main Resources Books Websites Documents Archives Community Blogs Personal Blogs Videos Related ...

  7. 使用架构(XSD)验证XML文件

    假使说XML是一个数据库,那么XSD就是这个数据库的结构.由此可见,XSD是如此重要,如果没有它,我们如何声明以及验证我们需要的XML数据文件的格式和合法性呢?那是不可能完成的任务,如果你将XML数据 ...

  8. Python_day8_面向对象(多态、成员修饰符、类中特殊方法、对象边缘知识)、异常处理之篇

    一.面向对象之多态 1.多态:简而言子就是多种形态或多种类型 python中不支持多态也用不到多态,多态的概念是应用与java/C#中指定传参的数据类型, java多态传参:必须是传参数的数据类型或传 ...

  9. python数据类型之dict

    1.clear:删除所有元素 #D.clear() -> None. Remove all items from D dic_a ={:::'gen'} dic_a.clear() print( ...

  10. 计时器Chronometer和时钟(AnalogClock和DigitalClock)

    计时器Chronometer和时钟(AnalogClock和DigitalClock) (1)Android提供了两个时钟组件:AnalogClock和DigitalClock,DigitalCloc ...