DBM_SQLTUNE使用简介
admin
2023-05-25 15:21:22
0

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_IDv$sqlbind_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');


相关内容

热门资讯

凤凰探访俄军前线后勤厨房:配备... 据凤凰卫视报道,凤凰记者卢宇光8月4日走进顿巴斯前线俄军某指挥所后勤保障排的厨房,早晨7点,基地军官...
抄袭者请注意:沉睡25年的条例... 【文/芯科状元】七月末上海一个闷热的傍晚,浦东张江一家射频前端公司的产品总监老陈把电脑合上,又打开。...
时隔两年,美驻日大使再次缺席 据日本共同社8月4日报道,美国驻日本大使馆当地时间周二宣布,大使乔治·格拉斯将缺席6日举行的广岛市和...
伊朗、阿曼霍尔木兹海峡重开协议... 伊朗和美国官员近日均透露,伊朗与阿曼正接近达成一项协议,以恢复霍尔木兹海峡的船舶通行。与此同时,一艘...
脱下长衫3年后,孔乙己的皮质醇... 作者|谢明宏 编辑|李春晖有网友去查皮质醇,被医生告知“小红书看多了”。2026年的赛博确诊全面升级...
布局亚洲!泽连斯基提出外交新方... 据凤凰卫视援引乌克兰国家通讯社报道,乌克兰总统泽连斯基近日在一次会议上提出外交新方向,将加强与亚洲国...
凯美瑞空调传感器故障 凯美瑞的空调传感器是一个非常重要的元件,它负责控制车内的温度,确保车内空气的清新和舒适。然而,由于使...
电脑的护眼模式在哪里设置 如何... 1、电脑桌面右击,选择个性化 2、选择窗口颜色 3、挑选绿色的颜色,绿色比较护眼 4、点...
大逆转!全球拼命建核电站,什么... 文|凯风AI的尽头是算力,算力的尽头是电力。01全球,正在拼命建核电站。日前,国常会一次性核准浙江金...
电脑上书名号怎么打 怎样在电... 电脑上打书名号的步骤分为以下三步:   第一步:在电脑上建立一个文档或聊天窗口,打开此文档; ...