利用ORACLE ADV 功能完成SQL TUNING 调优(顾问培训) “让DBA失业还是解脱?”
oracle自动判断SQL性能功能.
11G的ADV,建议.SNAPSHOT,数据集合, 存储在oracle sys $_开头的表(10几条).
创建SNAPSHOT时选择天数, 默认14天.
sql orderde by Gets.
Gets per exac每执行一次读取缓存次数.
executions 每小时执行次数(因为snapshot 每小时执行一次)
自动化调优建议.
--语句修改, rewrite.
--物理优化.
--调整索引. 想象的索引不走.
--gather, 不产生物理方面的变化, 信息采集. 自动重新当前表关联语句执行计划.
--对执行计划的固化. 提供了SQL PROFILE,与cursor绑定,将执行计划固化.效果很好.
(不需要oracle多一个对象) ==:取消固化.
如上,是adv的推荐. 提高的百分比推荐.
oracle Enterprise Mangerment.
-Data pump Export(当前数据server)/
-Original Export.(任意汇出地址,汇入更慢)
transaction执行上万秒, 看有没有阻塞的session.
active-session 几十分钟
dba -session 十几天.
阻塞与waiting.
单位是微妙. *1000 = 毫秒
如下为上机作业部分: (做一遍, 如上那些就都懂了!)
总结: 获得数据库自动推荐的tuning sql 优化建议, 包括物理, 静态等优化建议.
做完, "DBA就是失业"了?
开什么玩笑, 他们又偷懒了.
计算机追求无止境..... 偷懒混日子也是有妙招.
前文预热:
select sql_id, child_number,executions,parse_calls,loads,invalidations ,LAST_LOAD_TIME from v$sql where sql_text like ‘SELECT distinct substr(l.line_name, 1, 1) || substr(l.line_nam%‘ order by LAST_LOAD_TIME;
单引号内的字符串是原始sql语句的部分
本次上机作业内容如下:
--
在sqlplus 中运行
select * from table(dbms_xplan.display_cursor(‘31b1ba01z95b1‘,null,‘all ALLSTATS LAST‘));
如果在语句运行前在sqlplus中设置
alter session set statistics_level=all;
alter session set timed_statistics=true;
执行计划的内容会更丰富,以上设置在退出该session就失效。
--1 根据sqlid执行查询计划
select * from table(dbms_xplan.display_cursor(‘c5pqy84v71vry‘,0,‘all ALLSTATS LAST‘));
--2 定义变量, 已完成查询计划的, 完成相应自动优化建议task任务
variable stmt_task varchar2(64);
exec :stmt_task:=sys.dbms_sqltune.create_tuning_task(sql_id=>‘c5pqy84v71vry‘);
--3 获取当前已有优化建议的任务id
select task_id,task_name from user_advisor_tasks order by EXECUTION_START;
--4 执行相应分析处的执行计划, 获得优化建议.
exec dbms_sqltune.execute_tuning_task(task_name => ‘TASK_836‘);
--5 查询获得相应的优化建议内容
select dbms_sqltune.report_tuning_task(‘TASK_836‘)from dual;
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。