我的编程空间,编程开发者的网络收藏夹
学习永远不晚

DBM_SQLTUNE使用简介

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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');


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

DBM_SQLTUNE使用简介

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

dgraph 使用简介

dgraph 简介dgraph 使用示例(基于 golang)golang client 安装创建 schema数据的 CURD事务总结dgraph 简介dgraph 是基于 golang 开发的开源的分布式图数据库. 诞生时间不长, 发展却很迅速. 目前是
dgraph 使用简介
2015-11-24

pipenv 使用简介

之前在开发时一直使用 conda 使用作为虚拟环境管理工具,但有时候会经常会临时性的需要一个虚拟环境,如果使用 conda create 创建一个新环境,耗时不说,有时候还忘了删除,最后系统里一堆的虚拟环境。偶然发现 pipenv 后试用了
2023-01-31

SpiderMonkey 简介和使用

SpiderMonkey 是 Mozilla 基金会开发的一款开源的 JavaScript 引擎。它是 Firefox 浏览器的内置 JavaScript 引擎,也可作为独立的库用于其他项目。SpiderMonkey 的目标是提供高性能的
2023-09-14

Python中itertools简介使用介绍

itertools是python内置的模块,使用简单且功能强大,itertools模块标准化了一个快速、高效利用内存的核心工具集,这些工具本身或组合都很有用,这篇文章主要介绍了Python中itertools详解,需要的朋友可以参考下
2022-12-28

python使用sqlite简单介绍

python连接sqlite非常简单,基本步骤如下:用sqlite3.connect创建数据库连接,假设连接对象为conn如果该数据库操作不需要返回结果,就直接用conn.execute查询,如建表、删表、添加、修改删除数据等,需要conn
2023-01-31

Python3+cgroupspy安装使用简介

cgroups是Controlgroups的简称,是Linux内核提供的一种限制进程使用和种系统资源的特性,这篇文章主要介绍了Python3+cgroupspy安装使用教程,需要的朋友可以参考下
2023-05-18

编程热搜

目录