11g新特性-自动sql调优(Automatic SQL Tuning)
2015-07-08 19:35
281 查看
11g新特性-自动sql调优(Automatic SQL Tuning)
在Oracle 10g中,引进了自动sql调优特性。此外,ADDM也会监控捕获高负载的sql语句。
在Oracle 11g中,通过运行sql tuning advisor加强了自动sql调优功能。默认情况下是每天夜间通过自动任务的方式运行”自动sql调优“。
自动sql调优的过程:
1.识别需要调优的sql语句 根据AWR中的CPU和I/O负载来识别
2.调优,生成新的sql profile
在维护窗口(maintenance window),自动sql调优任务运行时,上一步识别出的sql语句会被“sql tuning advisor”调优。并产生相应的sql profiles。如果发现有统计信息丢失或过期,会通知GATHER_STATS_JOB
3.测试新的sql profile benefit%=(time_old – time_new)/(time_old)
4.执行符合标准的新的sql profile
可以查看dba_sql_profiles,有哪些sql profiles是被数据库自动执行的(type 列)
5.DBA可以产生自动sql调优活动的报告。可以确认产生的sql profile是否有效、删除新产生的sql profile等。
自动sql调优不会进行调优的sql:
-Ad hoc语句和很少重复执行的sql
-并行查询
-长时间运行的查询。对于长时间运行的sql,如果使用产生的sql profile进行测试,还是会需要长时间运行,就会忽略这样的sql。如果使用新产生的sql profile会显著减少时间,就不会忽略这类长时间运行的sql。
-递归sql
-DDL语句
-使用了insert、delete的DML语句 上面的语句,可以手动使用SQL Tuning Advisor进行调优。
上面的语句,可以手动使用SQL Tuning Advisor进行调优。
配置自动sql调优
使用dbms_sqltune包进行配置。 在maintenance window,自动sql调优特性会启动一个job(sys_auto_sql_tuning_task)。产生一个需要调优的sql 列表,然后根据重要性一次进行调优。 一般这个job会运行一小时,可以设置该job设置: dbms_sqltune.set_tuning_task_parameter('SYS_AUTO_SQL_TUNING_TASK','TIME_LIMIT',7200);
管理自动sql调优任务
1.开启自动sql调优
2.关闭自动sql调优
生成文本格式的自动sql调优建议报告:
相关视图:
-DBA_ADVISOR_EXECUTIONS
-DBA_ADVISOR_SQLSTATS
-DBA_ADVISOR_SQLPLANS
在Oracle 10g中,引进了自动sql调优特性。此外,ADDM也会监控捕获高负载的sql语句。
在Oracle 11g中,通过运行sql tuning advisor加强了自动sql调优功能。默认情况下是每天夜间通过自动任务的方式运行”自动sql调优“。
自动sql调优的过程:
1.识别需要调优的sql语句 根据AWR中的CPU和I/O负载来识别
2.调优,生成新的sql profile
在维护窗口(maintenance window),自动sql调优任务运行时,上一步识别出的sql语句会被“sql tuning advisor”调优。并产生相应的sql profiles。如果发现有统计信息丢失或过期,会通知GATHER_STATS_JOB
3.测试新的sql profile benefit%=(time_old – time_new)/(time_old)
4.执行符合标准的新的sql profile
可以查看dba_sql_profiles,有哪些sql profiles是被数据库自动执行的(type 列)
5.DBA可以产生自动sql调优活动的报告。可以确认产生的sql profile是否有效、删除新产生的sql profile等。
自动sql调优不会进行调优的sql:
-Ad hoc语句和很少重复执行的sql
-并行查询
-长时间运行的查询。对于长时间运行的sql,如果使用产生的sql profile进行测试,还是会需要长时间运行,就会忽略这样的sql。如果使用新产生的sql profile会显著减少时间,就不会忽略这类长时间运行的sql。
-递归sql
-DDL语句
-使用了insert、delete的DML语句 上面的语句,可以手动使用SQL Tuning Advisor进行调优。
上面的语句,可以手动使用SQL Tuning Advisor进行调优。
配置自动sql调优
使用dbms_sqltune包进行配置。 在maintenance window,自动sql调优特性会启动一个job(sys_auto_sql_tuning_task)。产生一个需要调优的sql 列表,然后根据重要性一次进行调优。 一般这个job会运行一小时,可以设置该job设置: dbms_sqltune.set_tuning_task_parameter('SYS_AUTO_SQL_TUNING_TASK','TIME_LIMIT',7200);
begin dbms_sqltune.set_tuning_task_parameter('SYS_AUTO_SQL_TUNING_TASK','LOCAL_TIME_LIMIT',1400); dbms_sqltune.set_tuning_task_parameter('SYS_AUTO_SQL_TUNING_TASK','ACCEPT_SQL_PROFILES','TRUE'); dbms_sqltune.set_tuning_task_parameter('SYS_AUTO_SQL_TUNING_TASK','MAX_SQL_PROFILES_PER_EXEC',50); dbms_sqltune.set_tuning_task_parameter('SSY_AUTO_SQL_TUNING_TASK','MAX_AUTO_SQL_PROFILES',10002); end;
管理自动sql调优任务
1.开启自动sql调优
begin dbms_auto_task_admin.enable( client_name => 'sql tuning advisor', operation => 'NULL',#在所有维护窗口都开启 window_name => 'NULL'); end;
2.关闭自动sql调优
begin dbms_auto_task_admin.disable( client_name => 'sql tuning advisor', operation => 'NULL', window_name => 'NULL'); end;
生成文本格式的自动sql调优建议报告:
SQL> variable my_rept CLOB; SQL> begin :my_rept := dbms_sqltune.report_auto_tuning_task( begin_exec=>NULL, end_exec=>NULL, type=>'TEXT', level=> 'TYPICAL', section=>'ALL', object_id=>NULL, result_limit=>NULL); end; SQL> print :my_rept
相关视图:
-DBA_ADVISOR_EXECUTIONS
-DBA_ADVISOR_SQLSTATS
-DBA_ADVISOR_SQLPLANS
相关文章推荐
- Redis的安装与使用
- SQL Server 2008 R2——创建函数 筛选出字符串中的数字 筛选出字符串中的非数字
- Ubuntu 14.04 下自动安装mongodb shell 脚本
- 【原创】遇到的若干MySQL与Oracle的区别小记(逐渐增加)
- MVC——数据库增删改查(Razor)——Html语法
- oracle创建表空间、创建用户、赋权限命令
- 初学_Android4高级编程-9 SQLite数据库
- 安装SQL Server提示“重叠的IO操作正在进行”解决
- sql server在高并发状态下同时执行查询与更新操作时的死锁问题
- MySQL获得当前日期时间以及时间的转换
- [mysql]一次主从数据不一致的问题解决过程
- Oracle SQLDeveloper ORA-01017 invalid username/password;logon denied (密码丢失解决方案)
- sql server 跨数据库插入数据
- Oracle Solaris 与 pci dss
- mysql 学习基础知识汇总
- MySQL常用客户端 命令
- Mysql修改编码设置及乱码问题
- 如何快速高效的更新memcached缓存数据
- MySQL优化之——复制
- mongodb数据库的一些简单操作