当前位置: 首页 > news >正文

给小白的oracle优化工具,了解一下

有时懒得分析或语句太长,可以尝试用oracle的dbms_sqldiag包进行sql优化,


--How To Use DBMS_SQLDIAG To Diagnose Query Performance Issues (Doc ID 1386802.1)
--诊断SQL 性能
SET ECHO ON
SET LINESIZE 132
SET PAGESIZE 999
SET LONG 999999
SET SERVEROUTPUT ON

DECLARE
 v_sql_diag_task_id varchar2(100);
BEGIN
v_sql_diag_task_id := DBMS_SQLDIAG.CREATE_DIAGNOSIS_TASK (
 sql_id=>'&sql_id',
 problem_type => DBMS_SQLDIAG.PROBLEM_TYPE_PERFORMANCE,
 time_limit => 900,
 task_name => 'PROBLEM_TYPE_PERFORMANCE_task' );

DBMS_SQLTUNE.SET_TUNING_TASK_PARAMETER(v_sql_diag_task_id,'_SQLDIAG_FINDING_MODE',DBMS_SQLDIAG.SQLDIAG_FINDINGS_FILTER_PLANS);
END;
/

--观察 Check the Task Created
col owner for a12
col task_name for a35
col advisor_name for a25
SELECT DISTINCT owner, task_name, advisor_name,status FROM DBA_ADVISOR_TASKS WHERE advisor_name ='SQL Repair Advisor' AND task_name like '%PERF%' ORDER BY 1;

--执行任务
BEGIN
 DBMS_SQLDIAG.EXECUTE_DIAGNOSIS_TASK (
        task_name => 'PROBLEM_TYPE_PERFORMANCE_task' );
END;
/

--看结果
SET LONG 9999999
SET PAGESIZE 500
SELECT DBMS_SQLDIAG.REPORT_DIAGNOSIS_TASK ('PROBLEM_TYPE_PERFORMANCE_task' ) as recommendations FROM DUAL;

--如果觉得还行 接受结果
BEGIN
 DBMS_SQLDIAG.ACCEPT_SQL_PATCH(
   task_name =>'PROBLEM_TYPE_PERFORMANCE_task',
   task_owner => 'M_LINCS',
   replace => TRUE);
END;
/

--确认生效
SELECT name, status FROM dba_sql_patches WHERE name LIKE '%SYS%';

--打扫房屋 清理任务
BEGIN
 DBMS_SQLDIAG.DROP_DIAGNOSIS_TASK (
     task_name => 'PROBLEM_TYPE_PERFORMANCE_task' );
END;
/

--确认清理完毕
SELECT DISTINCT owner, task_name, advisor_name FROM DBA_ADVISOR_TASKS WHERE advisor_name ='SQL Repair Advisor'
AND task_name like '%PERF%' ORDER BY 1;

--后悔了 删除优化措施(sql补丁)
SELECT name, status FROM dba_sql_patches WHERE name LIKE '%SYS%';

---Drop the SQL Patch.
---Replace following patch name with actual name of the SQL Patch
--- from previous query output.
BEGIN
  DBMS_SQLDIAG.DROP_SQL_PATCH (
      name=> 'SYS_SQLPTCH_<string>');
END;
/

--确认删除优化措施
--- Verify that the SQL Patch has been dropped.
---
SELECT name, status FROM dba_sql_patches WHERE name LIKE '%SYS%';


有时可能没有建议
在这里插入图片描述
此路不同,再想他法。

相关文章:

  • Docker容器日常维护常用命令大全
  • ds回答-开源llm应用开发平台
  • 【OMCI实践】ONT上线过程的omci消息(七)
  • 使用Fuse-DFS挂载文件存储 HDFS-后端存储ceph
  • Linux Mem -- 关于AArch64 MTE功能的疑问
  • DBGPT安装部署使用
  • python学习六
  • Java进阶——数据类型深入解析
  • DeepSeek本地部署+自主开发对话Web应用
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_list_init
  • 《算法宝典:全类型题目索引》
  • 点击phpstorm启动图标后,转圈圈后没有反应
  • GraphCL vs GCC
  • 使用Docker Compose部署 MySQL8
  • 牛客NC288803 和+和
  • 开源PDF解析工具olmOCR
  • 某个设备的RJ45网口接头为何不可连接任何POE设备
  • Qt 自带颜色属性
  • ZooKeeper分布式协调框架
  • 【LLM】DeepSeek开源技术汇总
  • 网站域名销售/百度快速排名技术培训
  • 网站建设综合实训/巩义网络推广公司
  • 工艺品网站设计/网页游戏
  • 电商网站建设合同模板/seo 优化思路
  • 营销型网站开发制作/营销推广公司
  • 网站建设合同书保密条款/sem代运营托管公司