利用sql_tuning_Advisor调优sql
2024-10-18 03:51:59
1.赋权给调优用户
grant ADVISOR to xxxxxx;
2.创建调优任务
使用sql_text创建
DECLARE
my_task_name VARCHAR2 (30);
my_sqltext CLOB;
BEGIN
my_sqltext := 'select * from emp where ename= :name and DEPTNO= :deptno';
my_task_name :=
DBMS_SQLTUNE.
CREATE_TUNING_TASK (
sql_text => my_sqltext,
bind_list => sql_binds (anydata.convertvarchar2 (10),
anydata.convertnumber (2)),
user_name => 'TEST',
scope => 'COMPREHENSIVE',
time_limit => 300,
task_name => 'test_sql_tuning',
description => 'Task to tune a query on emp');
END;
/
使用sql_id进行创建
DECLARE
my_task_name VARCHAR2 (30);
BEGIN
my_task_name :=
DBMS_SQLTUNE.
CREATE_TUNING_TASK (
SQL_ID => 'ddw7j6yfnw0vz',
scope => 'COMPREHENSIVE',
time_limit => 60,
task_name => 'tunning_task_ddw7j6yfnw0vz',
description => 'Task to tune a query on ddw7j6yfnw0vz');
END;
/
3.调整优化任务
--这里以调整调优任务时间为例
BEGIN
DBMS_SQLTUNE.
set_tuning_task_parameter (task_name => 'my_sql_tuning_task',
parameter => 'TIME_LIMIT',
VALUE => 300);
END;
4.执行sql调优任务
BEGIN
DBMS_SQLTUNE.EXECUTE_TUNING_TASK (task_name => 'test_sql_tuning');
END;
/
5.查看调优任务状态
SELECT status
FROM USER_ADVISOR_TASKS
WHERE task_name = 'test_sql_tuning';
6.查看调优任务结果
SET LONG 10000
SET LONGCHUNKSIZE 1000
SET LINESIZE 100
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('test_sql_tuning')
FROM DUAL;
7.其他
查看数据库的sql_profile
SELECT * FROM DBA_SQL_PROFILES;
删除sql的sql_profile
exec dbms_sqltune.drop_sql_profile('SYS_SQLPROF_014b39f084c88000');
最新文章
- jQuery之常用且重要方法梳理(siblings,nextAll,end,wrap,apply,call,each)-(二)
- 利用selector设置ImageButton不同状态下的背景图片
- C++之检测文件结尾
- Android -- 重设字符并统计原字符以及修改字符的长度以及位置
- 初次使用InstallShield笔记
- unity3d DefineManager 全局宏定义
- 如何解决Android的SDK与ADT不匹配问题
- dom div移动解决停顿问题
- c#执行Dos命令
- tribonacci
- 第6章 适配器模式(Adapter Pattern)
- java json字符串转List、Map等对象
- ReactJS-render
- 我的Android 4 学习系列之Intent 和 Broadcast Reciever
- linux 下source、sh、bash、./执行脚本的区别
- 使用HTML5的canvas做图片剪裁
- Objective-C基础语法高速入门
- BSA Network Shell系列-runcmd/runscript命令
- 深度学习入门实战(一):像Prisma一样算法生成梵高风格画像
- ionic3使用echarts