ITPub博客

首页 > 数据库 > Oracle > sql Tuning Advisor启用导致业务性能问题

sql Tuning Advisor启用导致业务性能问题

原创 Oracle 作者:lmxx2020 时间:2024-03-26 10:10:54 0 删除 编辑

数据库每天晚上10点后业务性能很卡,大量的insert被堵塞,查询等待事件发现有大量的“library cache lock”和“cursor: pin S wait on X”。

22:00数据库的统计信息开始收集, Sql Tuning Advisor堵塞了统计信息的收集,等待事件是“library cache lock”,Sql Tuning Advisor的等待事件是ON CUP。后续导致insert大量堵塞。

查询ash记录:

select sample_time,
       instance_number,
       session_id,
       session_serial#,
       sql_id,
       top_level_sql_id,
       sql_opname,
       sql_exec_id,
       sql_exec_start,
       event,
       session_state,
       seq#,
       blocking_session,
       blocking_session_serial#,
       blocking_inst_id,
       p1text,
       p1,
       p2text,
       p2,
       p3text,
       p3,
       top_level_call_name,
       program,
       in_hard_parse
  from dba_hist_active_sess_history
 where sample_time >
       to_date('2024-03-20 22:00:00', 'yyyy-MM-dd HH24:mi:ss')
   and sample_time <
       to_date('2024-03-20 22:20:00', 'yyyy-MM-dd HH24:mi:ss')
   and event = 'library cache lock'
 order by sample_time;

检查等待事件:

sql_id:b6usrg82hwsa3,正在执行统计信息收集,dbms_stats.gather_database_stats_job_proc ( )

查看业务卡顿时的blocking_session,主要发生在dbms_sqltune.execute_tuning_task('SYS_AUTO_SQL_TUNING_TASK')

11g之后 的三个自动job

除了收集统计信息有必要保留之外,另外两个其实用处不大,SQL tuning advisor虽然可以帮助我们诊断、分析和优化SQL语句的性能问题,但也只是收集。

所以可以禁用:

exec DBMS_AUTO_TASK_ADMIN.disable(client_name=>'sql tuning advisor',operation=>NULL,window_name=>NULL);

exec DBMS_AUTO_TASK_ADMIN.disable(client_name=>'auto space advisor',operation=>NULL,window_name=>NULL);

官方文档里也有提到这可能是个bug:

ORA 7445 [qcuatc] from SQL Tuning Advisor job. (Doc ID 2506947.1)


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22967847/viewspace-3010132/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2024-01-09

  • 博文量
    106
  • 访问量
    90385