django oracle clob,SPA(SQL Performance Analyzer)实践小记 step-by-step

--1. Create a SQL Tuning Set:

BEGINdbms_sqltune.create_sqlset('DJANGO_SET1');END;

--2.Load SQL into the STS(From AWR Snapshots,load all the queries between two snapshots) --测试环境,SQL不足,加载两个快照间所有sql

select snap_id, begin_interval_time, end_interval_time from dba_hist_snapshot order by 1;

DECLARE

CUR SYS_REFCURSOR;

BEGIN

OPEN CUR FOR

SELECT VALUE(P)

FROM TABLE(DBMS_SQLTUNE.SELECT_WORKLOAD_REPOSITORY(BEGIN_SNAP => 84,

END_SNAP   => 115)) P;

DBMS_SQLTUNE.LOAD_SQLSET('DJANGO_SET1', CUR);

CLOSE CUR;

END;

--3. CREATE ADVISOR TASK  AND SET PARAMETERS( PL/SQL Packages and Types Reference DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER)

DECLARE

STS_TASK VARCHAR2(4000);

BEGIN

STS_TASK := DBMS_SQLPA.CREATE_ANALYSIS_TASK(SQLSET_NAME => 'DJANGO_SET1',

TASK_NAME   => 'DJANGO_SPA_TASK1');

DBMS_OUTPUT.PUT_LINE(STS_TASK);--DJANGO_SPA_TASK1

END;

/

--4.设置任务参数

BEGIN

DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(TASK_NAME => 'DJANGO_SPA_TASK1',

PARAMETER => 'APPLY_CAPTURED_COMPILENV',

VALUE     => 1);

DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(TASK_NAME => 'DJANGO_SPA_TASK1',

PARAMETER => 'COMPARISON_METRIC',

VALUE     => 'cpu_time + buffer_gets * 10)');

DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(TASK_NAME => 'DJANGO_SPA_TASK1',

PARAMETER => 'DEFAULT_EXECUTION_TYPE',

VALUE     => 'execute');

END;

/

--5.1执行任务

BEGIN

DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(TASK_NAME      => 'DJANGO_SPA_TASK1',

EXECUTION_TYPE => 'EXECUTE',

EXECUTION_NAME => 'beore_change');--before

END;

/

--.本处测试修改optimizer_features_enable和optimizer_index_cost_adj参数

SQL> alter system set optimizer_features_enable='10.2.0.4'  scope=memory; --11.2.0.4

System altered.

SQL> alter system set optimizer_index_cost_adj=25 scope=memory;--100

System altered.

--5.2系统参数,修改参数后再次执行任务

BEGIN

DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(TASK_NAME      => 'DJANGO_SPA_TASK1',

EXECUTION_TYPE => 'EXECUTE',

EXECUTION_NAME => 'after_change');

END;

--5.3 细分各维度

/*

elapsed_time (default),cpu_time, buffer_gets, disk_reads, direct_writes, and optimizer_cost.

*/

--BUFFER_GETS

BEGIN

DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(TASK_NAME        => 'DJANGO_SPA_TASK1',

EXECUTION_NAME   => 'compare_bg',

EXECUTION_TYPE   => 'COMPARE PERFORMANCE',

EXECUTION_PARAMS => DBMS_ADVISOR.ARGLIST('COMPARISON_METRIC',

'BUFFER_GETS',

'EXECUTION_NAME1',

'beore_change',

'EXECUTION_NAME2',

'after_change'),

EXECUTION_DESC   => 'change optimizer_features_enable and optimizer_index_cost_adj');

END;

/

--elapsed_time

BEGIN

DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(TASK_NAME        => 'DJANGO_SPA_TASK1',

EXECUTION_NAME   => 'compare_elapsed_time1',

EXECUTION_TYPE   => 'COMPARE PERFORMANCE',

EXECUTION_PARAMS => DBMS_ADVISOR.ARGLIST('COMPARISON_METRIC',

'elapsed_time',

'EXECUTION_NAME1',

'beore_change',

'EXECUTION_NAME2',

'after_change'),

EXECUTION_DESC   => 'change optimizer_features_enable and optimizer_index_cost_adj');

END;

/

--cpu_time

BEGIN

DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(TASK_NAME        => 'DJANGO_SPA_TASK1',

EXECUTION_NAME   => 'compare_cpu_time1',

EXECUTION_TYPE   => 'COMPARE PERFORMANCE',

EXECUTION_PARAMS => DBMS_ADVISOR.ARGLIST('COMPARISON_METRIC',

'cpu_time',

'EXECUTION_NAME1',

'beore_change',

'EXECUTION_NAME2',

'after_change'),

EXECUTION_DESC   => 'change optimizer_features_enable and optimizer_index_cost_adj');

END;

/

--disk_reads

BEGIN

DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(TASK_NAME        => 'DJANGO_SPA_TASK1',

EXECUTION_NAME   => 'compare_disk_reads1',

EXECUTION_TYPE   => 'COMPARE PERFORMANCE',

EXECUTION_PARAMS => DBMS_ADVISOR.ARGLIST('COMPARISON_METRIC',

'disk_reads',

'EXECUTION_NAME1',

'beore_change',

'EXECUTION_NAME2',

'after_change'),

EXECUTION_DESC   => 'change optimizer_features_enable and optimizer_index_cost_adj');

END;

/

--direct_writes

BEGIN

DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(TASK_NAME        => 'DJANGO_SPA_TASK1',

EXECUTION_NAME   => 'compare_direct_writes1',

EXECUTION_TYPE   => 'COMPARE PERFORMANCE',

EXECUTION_PARAMS => DBMS_ADVISOR.ARGLIST('COMPARISON_METRIC',

'direct_writes',

'EXECUTION_NAME1',

'beore_change',

'EXECUTION_NAME2',

'after_change'),

EXECUTION_DESC   => 'change optimizer_features_enable and optimizer_index_cost_adj');

END;

/

--optimizer_cost

BEGIN

DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(TASK_NAME        => 'DJANGO_SPA_TASK1',

EXECUTION_NAME   => 'compare_optimizer_cost1',

EXECUTION_TYPE   => 'COMPARE PERFORMANCE',

EXECUTION_PARAMS => DBMS_ADVISOR.ARGLIST('COMPARISON_METRIC',

'optimizer_cost',

'EXECUTION_NAME1',

'beore_change',

'EXECUTION_NAME2',

'after_change'),

EXECUTION_DESC   => 'change optimizer_features_enable and optimizer_index_cost_adj');

END;

/

--6.获取报告

SELECT DBMS_SQLPA.REPORT_ANALYSIS_TASK('DJANGO_SPA_TASK1',

'HTML',

'ALL',

'ALL',

EXECUTION_NAME => 'after_change')

FROM DUAL;

SELECT DBMS_SQLPA.REPORT_ANALYSIS_TASK('DJANGO_SPA_TASK1',

'HTML',

'ALL',

'ALL',

EXECUTION_NAME => 'beore_change')

FROM DUAL;

SELECT XMLTYPE(DBMS_SQLPA.REPORT_ANALYSIS_TASK('DJANGO_SPA_TASK1', 'html', 'typical', 'all', NULL, 100, 'compare_elapsed_time1'))

.GETCLOBVAL(0, 0)

FROM DUAL;

SELECT XMLTYPE(DBMS_SQLPA.REPORT_ANALYSIS_TASK('DJANGO_SPA_TASK1', 'html', 'typical', 'all', NULL, 100, 'compare_cpu_time1'))

.GETCLOBVAL(0, 0)

FROM DUAL;

SELECT XMLTYPE(DBMS_SQLPA.REPORT_ANALYSIS_TASK('DJANGO_SPA_TASK1', 'html', 'typical', 'all', NULL, 100, 'compare_disk_reads1'))

.GETCLOBVAL(0, 0)

FROM DUAL;

SELECT XMLTYPE(DBMS_SQLPA.REPORT_ANALYSIS_TASK('DJANGO_SPA_TASK1', 'html', 'typical', 'all', NULL, 100, 'compare_direct_writes1'))

.GETCLOBVAL(0, 0)

FROM DUAL;

SELECT XMLTYPE(DBMS_SQLPA.REPORT_ANALYSIS_TASK('DJANGO_SPA_TASK1', 'html', 'typical', 'all', NULL, 100, 'compare_optimizer_cost1'))

.GETCLOBVAL(0, 0)

FROM DUAL;

--7.报告展示示例

237bf64cfcc077b5d9df11947a5edcd0.png

参考:

1.How to Load Queries into a SQL Tuning Set (STS) (文档 ID 1271343.1)

2.SQL Performance Analyzer (An Oracle White Paper November 2007)

3.Oracle  Database Real Application Testing User’s Guide 11.2

4.Oracle Database PL/SQL Packages and Types Reference 11.2

5.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27349469/viewspace-2021799/,如需转载,请注明出处,否则将追究法律责任。

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值