sql_patch用法

如果我们有一个问题 SQL 语句与SQL_ID 556prbqmcw8d1",我们可能会执行以下操作。

输出建议

DECLARE
  l_task    VARCHAR2(50);
  l_report  CLOB;
BEGIN
  l_task := SYS.DBMS_SQLDIAG.create_diagnosis_task( 
                  sql_id       => '556prbqmcw8d1',
                  task_name    => 'sql_repair_task',
                  problem_type => DBMS_SQLDIAG.problem_type_execution_error);

  SYS.DBMS_SQLDIAG.execute_diagnosis_task(task_name => l_task);

  l_report := SYS.DBMS_SQLDIAG.report_diagnosis_task(task_name => l_task);
 
  DBMS_OUTPUT.PUT_LINE ('Report : ' || l_report);
END;
/
PROBLEM_TYPE
DBMS_SQLDIAG
PROBLEM_TYPE_PERFORMANCE
PROBLEM_TYPE_WRONG_RESULTS
PROBLEM_TYPE_COMPILATION_ERROR
PROBLEM_TYPE_EXECUTION_ERROR
PROBLEM_TYPE_ALT_PLAN_GEN

检查报表的输出,应用建议。

BEGIN
  SYS.DBMS_SQLDIAG.accept_sql_patch(
        task_name  => 'sql_repair_task',
        task_owner => 'SYS',
        replace    => TRUE);
END;
/

直接给sql添加hint
BEGIN
  SYS.DBMS_SQLDIAG_INTERNAL.i_create_patch(
    sql_text  => 'SELECT * FROM big_table WHERE id >= 8000',
    hint_text => 'PARALLEL(big_table,10)',
    name      => 'big_table_sql_patch');
END;
/
12.2+
DECLARE
  l_patch_name  VARCHAR2(32767);
BEGIN
  -- SQL Text
  l_patch_name := SYS.DBMS_SQLDIAG.create_sql_patch(
    sql_text  => 'SELECT * FROM big_table WHERE id >= 8000',
    hint_text => 'PARALLEL(big_table,10)',
    name      => 'big_table_sql_patch_1');

  -- SQL ID
  l_patch_name := SYS.DBMS_SQLDIAG.create_sql_patch(
    sql_id    => '19v5guvsgcd1v',
    hint_text => 'PARALLEL(big_table,10)',
    name      => 'big_table_sql_patch_2');
END;
/

如果以后要删除 SQL 修补程序,可以使用该过程执行此操作。DROP_SQL_PATCH

BEGIN
  SYS.DBMS_SQLDIAG.drop_sql_patch(name => 'my_sql_patch');
END;
/
dba_sql_patch




posted @   悠游~~~  阅读(629)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示