千家信息网

DBM_SQLTUNE使用简介

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,DBMS_SQLTUNE的使用方法所需权限grant advisor to user;grant select_catalog_role to user; --通过OEM管理必不可少grant exe
千家信息网最后更新 2026年11月01日DBM_SQLTUNE使用简介

DBMS_SQLTUNE的使用方法


所需权限

grant advisor to user;

grant select_catalog_role to user; --通过OEM管理必不可少

grant execute on dbms_sqltune to user;

获取绑定变量的方法

此时分两种情况,一种是在v$sql中存在的SQL,一种是在v$sql中不存在的SQL

转化v$sql中对应的绑定变量值

跟据SQL_ID取v$sql中bind_data的值

select position, value_string

from table(dbms_sqltune.extract_binds('beda0a200500521ffd700'));

如果v$sql中不存在,可以用此方法获取绑定变量值

select dbms_sqltune.extract_bind(bind_data,1).value_string || '-' ||

dbms_sqltune.extract_bind(bind_data, 2).value_string || '-' ||

dbms_sqltune.extract_bind(bind_data, 3).value_string || '-' ||

dbms_sqltune.extract_bind(bind_data, 4).value_string || '-' ||

dbms_sqltune.extract_bind(bind_data, 5).value_string || '-' ||

dbms_sqltune.extract_bind(bind_data, 6).value_string

from sys.wrh$_sqlstat

where sql_id = '1nnrufx6sw8sd'

1、创建调优任务

1.1 通过sql_text创建(绑定变量SQL)

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 => 60,

task_name =>'test_sql_tuning',

description => 'Task to tune a query on emp');

END;

/

1.2 无绑定变量SQL的优化

declare

my_task_name VARCHAR2(30);

my_sqltext CLOB;

BEGIN

my_sqltext := 'select * fromorabpel.cube_scope';

my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_text => my_sqltext,

user_name => 'orabpel',

scope => 'COMPREHENSIVE',

time_limit => 60, --优化限时60s

task_name => 'wxw_sql_tuning_task',

description => 'tune thebad sql');

dbms_sqltune.Execute_tuning_task(task_name =>'TEST_sql_tuning_task');

END;

1.3 通过SQL_ID进行优化

这种情况通常常用于v$sql中的异常SQL优化

DECLARE

my_task_name VARCHAR2(40);

BEGIN

my_task_name := DBMS_SQLTUNE.create_tuning_task(

sql_id => '1hudpukz651tt',

plan_hash_value => NULL,

scope => dbms_sqltune.SCOPE_COMPREHENSIVE,

time_limit => dbms_sqltune.TIME_LIMIT_DEFAULT,

task_name => 'test_sql_tuning_1hudpukz651tt',

description => '1hudpukz651tt');

DBMS_SQLTUNE.EXECUTE_TUNING_TASK(task_name => 'test_sql_tuning_1hudpukz651tt');

dbms_output.put_line(my_task_name);

END;



1.4 通过指定AWR中的Snap_id进行优化

declare

my_task_name varchar2(30);

begin

my_task_name := dbms_sqltune.create_tuning_task(

begin_snap => 24365,

end_snap => 24366,

sql_id =>'d40kghyfbg8sj',

plan_hash_value => null,

scope =>'comprehensive',

time_limit => 60,

task_name =>'wxw_sql_tuning_task',

description => 'tune thebad sql'

);

dbms_sqltune.execute_tuning_task (task_name =>'wxw_sql_tuning_task');

end;

2、执行调优任务

---execute

execdbms_sqltune.execute_tuning_task('TEST_tuning_task');

3、查看执行情况

---checek

SELECT status FROM USER_ADVISOR_TASKS WHERElower(task_name) ='test_tuning_task';

select * from user_advisor_tasks;

---report

SET LONG 999999

set serveroutput on size 999999

SET LINESIZE 1000

SELECTDBMS_SQLTUNE.REPORT_TUNING_TASK('TEST_tuning_task') FROM DUAL;

4、删除调优任务

---drop

execdbms_sqltune.drop_tuning_task('TEST_tuning_task');


任务 变量 情况 方法 是在 量值 使用方法 必不可少 时分 权限 此方法 管理 简介 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海挚品互联网科技有限公司 河南云网互联网络科技有限公司 今日互联网科技 美国互联网科技巨头监管 网络科技有限互联网 杭州互联网科技公司 火传媒上海互联网科技 掌上梦互联网科技 互联网科技宣传片 互联网金融监管科技 深圳互联网科技怎么样 科技赋能互联网健康 国大互联网教育科技有限公司薪资 广东工业互联网大赛深圳学泰科技 富国互联网金融科技混合基金 上海互联网科技公司ppt 互联网科技包装股份有限公司上市 北京互联网科技类企业分布 保山浩联互联网科技有限公司 杭州科技互联网公司有哪些 互联网科技财经 互联网科技与金融科技 火传媒上海互联网科技 互联网养老 桔豆科技 新华互联网科技校企合作 山东吉时兔互联网科技有限公司 彤创互联网科技有限公司 互联网科技公司有风险吗 互联网科技公司营业执照怎么办理 山东蛋芒互联网科技有限公司
0