利用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;

09bd9c1b-de97-4bc8-96af-181bc69f4b02

--4 执行相应分析处的执行计划, 获得优化建议.
exec dbms_sqltune.execute_tuning_task(task_name => 'TASK_836');

--5 查询获得相应的优化建议内容
select dbms_sqltune.report_tuning_task('TASK_836')from dual; 

原文地址:https://www.cnblogs.com/hijushen/p/4273260.html