oracle-优化-如何对sql创建和管理sql_profile

简介:
    1. profile创建方法
    1. profile相关管理

1. profile创建方法

两种方式生成sql profile:

1. create_sql_profile_by_sql_id

----1.创建优化任务
DECLARE 
tune_task VARCHAR2(30); 
BEGIN 
tune_task:=DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id=>'18fbzzck4dqz8',task_name=>'18fbzzck4dqz8_tune_taks', scope=>'COMPREHENSIVE',time_limit =>600,description=>'test'); 
END; 
/ 
----2.执行优化任务
BEGIN 
DBMS_SQLTUNE.EXECUTE_TUNING_TASK( task_name => '18fbzzck4dqz8_tune_taks' ); 
END; 
/ 
----3. 查看报表
set lines 999 
set long 100000 
set longchunksize 100000 
select dbms_sqltune.report_tuning_task('18fbzzck4dqz8_tune_taks') from dual;

2. create_sql_profile_by_sqltext

----1.创建优化任务

exec dbms_sqltune.drop_tuning_task('qq_tuning_sql_test');
DECLARE
my_task_name VARCHAR2(30);
my_sqltext   CLOB;
BEGIN
my_sqltext := 'select count(*) from WCADMIN.A_XML_MCOXMLOBJECT'; <<<
my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK(
sql_text    => my_sqltext,
--sql_id =>'24x3y9ty7y32f',
user_name   => 'WCADMIN',   
scope       => 'COMPREHENSIVE',
time_limit  => 60,
task_name   => '22111qq_tuning_sql_test',
description => 'Task to tune a query on a specified table');
END;
/
函数CREATE_TUNING_TASK
在函数CREATE_TUNING_TASK,
sql_text是需要优化的语句,
user_name是该语句通过哪个用户执行,
scope是优化范围(limited或comprehensive),
time_limit优化过程的时间限制,
task_name优化任务名称,
description优化任务描述。
可以通过视图USER_ADVISOR_LOG和USER_ADVISOR_LOG来查看创建过的优化任务

----2.执行优化任务

exec DBMS_SQLTUNE.EXECUTE_TUNING_TASK( task_name => '22111qq_tuning_sql_test');

----3.检查优化任务的状态

SELECT task_name,status FROM USER_ADVISOR_TASKS WHERE task_name ='2111qq_tuning_sql_test';

TASK_NAME                      STATUS
------------------------------ -----------
ocpyang_tuning_sql_test        COMPLETED

----4. 查看报表

通过使用dbms_sqltune.report_tning_task函数获到优化任务的结果.

set serveroutput on
SET LONG 999999
set serveroutput on size 999999
SET LINESIZE 100
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK( '22111qq_tuning_sql_test') from DUAL;

3. profile相关管理

查看存在的profile,名称、创建时间、是否启用

SELECT * FROM  DBA_SQL_PROFILES;

应用profile

execute dbms_sqltune.accept_sql_profile(task_name =>'3c1zqw6fjppn2_tune_taks',description => 'sql_id_3c1zqw6fjppn2', task_owner => 'SYSTEM', replace => TRUE);

禁用profile

  begin
dbms_sqltune.alter_sql_profile( 
name   => 'SYS_SQLPROF_01783a531d890000', 
attribute_name => 'status', 
value   => 'disabled'); 
end; 
/

Altering a SQL Profile
Alter the STATUS, NAME, DESCRIPTION, and CATEGORY attributes of  an existing SQL Profile with the ALTER_SQL_PROFILE procedure.

启用force_match=>true选项,需要先删除原来的profile

execute dbms_sqltune.accept_sql_profile(task_name =>'3c1zqw6fjppn2_tune_taks',description => 'sql_id_3c1zqw6fjppn2', task_owner => 'SYSTEM', replace => TRUE force_match=>true);

删除已应用的SQL_PROFILE

BEGIN
 DBMS_SQLTUNE.DROP_SQL_PROFILE(name => 'SYS_SQLPROF_01783a531d890000'); 
END;

查询已存在的SQLTUNING TASK,USER_ADVISOR_TASKS视图可用来查看当前用户下所创建的调优任务

SELECT task_name,status FROM USER_ADVISOR_TASKS;

删除当前用户创建的SQLTUNING TASK

begin
  DBMS_SQLTUNE.drop_tuning_task(task_name => 'test_falist_tuning_task6');
end;
目录
相关文章
|
11天前
|
SQL 资源调度 分布式计算
如何让SQL跑快一点?(优化指南)
这篇文章主要探讨了如何在阿里云MaxCompute(原ODPS)平台上对SQL任务进行优化,特别是针对大数据处理和分析场景下的性能优化。
|
20天前
|
SQL 监控 数据库
慢SQL对数据库写入性能的影响及优化技巧
在数据库管理系统中,慢SQL(即执行缓慢的SQL语句)不仅会影响查询性能,还可能对数据库的写入性能产生显著的不利影响
|
21天前
|
SQL 监控 Oracle
Oracle SQL性能优化全面指南
在数据库管理领域,Oracle SQL性能优化是确保数据库高效运行和数据查询速度的关键
|
23天前
|
SQL 存储 Oracle
Oracle数据库SQL语句详解与应用指南
在数字化时代,数据库已成为各类企业和组织不可或缺的核心组件。Oracle数据库作为业界领先的数据库管理系统之一,广泛应用于各种业务场景。掌握Oracle数据库的SQL语句是数据库管理员、开发人员及运维人员的基本技能。本文将详细介绍Oracle数据库SQL语句的基本概念、语法、应用及最佳实践。一、Or
37 3
|
23天前
|
SQL 关系型数据库 PostgreSQL
遇到SQL 子查询性能很差?其实可以这样优化
遇到SQL 子查询性能很差?其实可以这样优化
67 2
|
23天前
|
SQL Oracle 关系型数据库
Oracle SQL:了解执行计划和性能调优
Oracle SQL:了解执行计划和性能调优
37 1
|
20天前
|
SQL 存储 数据库
慢SQL对数据库写入性能的影响及优化技巧
在数据库管理系统中,慢SQL(即执行缓慢的SQL语句)不仅会影响查询性能,还可能对数据库的写入性能产生显著的不利影响
|
SQL 关系型数据库 Oracle
ORACLE SQL优化之ORA-03150&ORA-02055&ORA-02063
                                                                                                             >   
4857 0
|
SQL Oracle 关系型数据库
Oracle SQL优化之多表连接
Oracle SQL优化之多表连接
557 0
Oracle SQL优化之多表连接
|
SQL 存储 Oracle
Oracle SQL语句优化方法总结
  1、SQL语句尽量用大写的   因为oracle总是先解析SQL语句,把小写的字母转换成大写的再执行。   2、使用表的别名   当在SQL语句中连接多个表时, 尽量使用表的别名并把别名前缀于每个列上。这样一来,   就可以减少解析的时间并减少那些由列歧义引起的语法错误。   3、选择最有效率的表名顺序(只在基于规则的优化器(RBO)中有效)
204 0

推荐镜像

更多