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;
目录
相关文章
|
25天前
|
SQL
慢sql治理问题之 Task 数量分布不均的问题你们是如何优化的
慢sql治理问题之 Task 数量分布不均的问题你们是如何优化的
慢sql治理问题之 Task 数量分布不均的问题你们是如何优化的
|
20天前
|
Java XML Maven
跨越时代的飞跃:Struts 2 升级秘籍——从旧版本无缝迁移到最新版,焕发应用新生!
【8月更文挑战第31天】随着软件技术的发展,Struts 2 框架也在不断更新。本文通过具体案例指导开发者如何从旧版平滑升级到 Struts 2.6.x。首先更新 `pom.xml` 中的依赖版本,并执行 `mvn clean install`。接着检查 `struts.xml` 配置,确保符合新版本要求,调整包扫描器等设置。审查 Action 类及其注解,检查配置文件中的弃用项及插件。更新自定义拦截器实现,并验证日志配置。最后,通过一系列测试确保升级后的系统正常运行。通过这些步骤,可以顺利完成 Struts 2 的版本升级,提升应用的安全性和性能。
57 0
|
20天前
|
SQL 存储 数据库
|
20天前
|
SQL 数据管理 关系型数据库
SQL与云计算:利用云数据库服务实现高效数据管理——探索云端SQL应用、性能优化、安全性与成本效益,为企业数字化转型提供全方位支持
【8月更文挑战第31天】在数字化转型中,企业对高效数据管理的需求日益增长。传统本地数据库存在局限,而云数据库服务凭借自动扩展、高可用性和按需付费等优势,成为现代数据管理的新选择。本文探讨如何利用SQL和云数据库服务(如Amazon RDS、Google Cloud SQL和Azure SQL Database)实现高效的数据管理。通过示例和最佳实践,展示SQL在云端的应用、性能优化、安全性及成本效益,助力企业提升竞争力。
38 0
|
20天前
|
SQL 关系型数据库 MySQL
SQL性能调优的神奇之处:如何用优化技巧让你的数据库查询飞起来,实现秒级响应?
【8月更文挑战第31天】在现代软件开发中,数据库性能至关重要。本文通过一个实战案例,展示了从慢查询到秒级响应的全过程。通过对查询的详细分析与优化,包括创建索引、改进查询语句及数据类型选择等措施,最终显著提升了性能。文章还提供了示例代码及最佳实践建议,帮助读者掌握SQL性能调优的核心技巧。
36 0
|
20天前
|
SQL 关系型数据库 MySQL
SQL索引构建与优化的神奇之处:如何用高效索引让你的数据检索飞起来?
【8月更文挑战第31天】在现代软件开发中,数据库索引对于提升查询性能至关重要。本文详细介绍了SQL索引的概念、构建方法及优化技巧,包括避免不必要的索引、使用复合索引等策略,并提供了实用的示例代码,如 `CREATE INDEX index_name ON table_name (column_name, another_column_name);`。通过遵循这些最佳实践,如了解查询模式和定期维护索引,可以大幅提高数据检索效率,从而增强应用程序的整体性能。
53 0
|
20天前
|
SQL 关系型数据库 MySQL
OceanBase 的 SQL 兼容性与优化
【8月更文第31天】随着分布式计算的发展,越来越多的企业开始采用分布式数据库来满足其大规模数据存储和处理的需求。OceanBase 作为一款高性能的分布式关系数据库,其设计旨在为用户提供与传统单机数据库类似的 SQL 查询体验,同时保持高可用性和水平扩展能力。本文将深入探讨 OceanBase 的 SQL 引擎特性、兼容性问题,并提供一些针对特定查询进行优化的方法和代码示例。
60 0
|
SQL Oracle 关系型数据库
oracle用SQL Plus输入命令为什么只显示2
oracle用SQL Plus输入命令为什么只显示2
574 0
oracle用SQL Plus输入命令为什么只显示2
|
SQL Oracle 关系型数据库

推荐镜像

更多