• 查询job有关的几个视图,以及手工计算采样率


    今天检查alert日志发现几个错误,一个是关于job的,一个是关于ora-04030的.最终发现都和job有关,这儿小小总结一下.

    1.job报的错:1ORA-12012: error on auto execute of job XXXX

    数据库版本10.2.0.5(10g之后原来的job被SCHEDULER替换升级了) 根据XXXX的号可以查询相关视图来查询到是什么job

    select * from sys.scheduler$_job where obj#=&xxxx;

    然后再根据job以及alert中的其他提示来诊断问题出在哪儿.我在这个地方,alert中还提示了是调用了个存储过程,出的错,初步判断是存储过程中的某一行,没有进行异常的捕获,所以造成了job的抛出错误

    2.另外,查询job执行情况的一个视图

    SELECT LOG_DATE, RUN_DURATION, JOB_NAME, STATUS, ERROR#  FROM DBA_SCHEDULER_JOB_RUN_DETAILS
     WHERE STATUS != 'SUCCEEDED';

    根据这个视图可以查询失败了的job是哪些,有多少job是失败了的,然后再根据这个线头去找问题. 在ERROR#列可以看到在失败的时候oracle抛出的异常号.在这儿,对于AUTO_SPACE_ADVISOR_JOB抛出的就是ORA-04030.(因为这个对应的系统比较大,大概有5-6个T,里面有些大表有好几百G的)

    3.最后,对于oracle自动收集统计信息的job:GATHER_STATS_JOB,对于数据量巨大的系统,很难在时间窗口内完成,建议disable掉,改用手工的

    查看GATHER_STATS_JOB执行的情况:

    SELECT log_id,
           job_name,
           status,
           TO_CHAR(ACTUAL_START_DATE, 'DD-MON-YYYY HH24:MI') start_date,       
           TO_CHAR(log_date, 'DD-MON-YYYY HH24:MI') log_date
      FROM dba_scheduler_job_run_details
     WHERE job_name = 'AUTO_SPACE_ADVISOR_JOB'
     order by 4 ;

    4.查询统计信息为空或者统计信息过期的表,并根据表的大小来设定取样率的sql:

    SELECT OWNER,
           SEGMENT_NAME,
           CASE
             WHEN SIZE_GB < 0.5 THEN
              30
             WHEN SIZE_GB >= 0.5 AND SIZE_GB < 1 THEN
              20
             WHEN SIZE_GB >= 1 AND SIZE_GB < 5 THEN
              10
             WHEN SIZE_GB >= 5 AND SIZE_GB < 10 THEN
              5
             WHEN SIZE_GB >= 10 THEN
              1
           END AS PERCENT,
           8 AS DEGREE
      FROM (SELECT OWNER, SEGMENT_NAME, SUM(BYTES / 1024 / 1024 / 1024) SIZE_GB
              FROM DBA_SEGMENTS
             WHERE OWNER = 'PMIS'
               AND SEGMENT_NAME IN
                   (SELECT /*+ UNNEST */
                    DISTINCT TABLE_NAME
                      FROM DBA_TAB_STATISTICS
                     WHERE (LAST_ANALYZED IS NULL OR STALE_STATS = 'YES')
                       AND OWNER = 'PMIS')
             GROUP BY OWNER, SEGMENT_NAME)

    根据这个算出来的采样率之后,再通过GATHER_TABLE_STATS去手工收集,而不采用自动收集.

  • 相关阅读:
    Silverlight/Windows8/WPF/WP7/HTML5周学习导读(8月20日8月26日)
    Silverlight/Windows8/WPF/WP7/HTML5周学习导读(9月24日9月30日)
    获取免费Windows Store开发者账户方法
    QOCIDriver: unable to create environment Unable to free Error handle: 2 Unable to free Environment
    C:\workdir\dbManager\lib>c:\Qt\Qt5.9.9\5.9.9\mingw53_32\bin\windeployqt.exe ./db ManagerDll.dll
    QT5.9.932 oracle1032 驱动编译
    sqlplus
    c++const成员函数*
    C++ 函数内静态静态变量
    c++构造/拷贝构造函数初始化变量*
  • 原文地址:https://www.cnblogs.com/nazeebodan/p/2845703.html
Copyright © 2020-2023  润新知