【APM】Oracle 查询组超时告警常用处理办法

【APM】Oracle 查询组超时告警常用处理办法

在某些情况下,APM 会抛出查询组超时错误,如下所示:
由于此查询组导致套接字读取超时:xxxxxxxx 
错误消息:java.sql.SQLRecoverableException:IO错误:套接字读取已过时。
(或)
由于此查询组导致套接字读取超时:xxxxxxxx 
错误消息:java.sql.SQLTimeoutException:ORA-01013:用户请求取消当前操作。
xxxxxxxx - 是查询组名称
解决方案: 
从APM web GUI中,转到对应的Oracle监视器的概览页面->监视器动作->编辑监控器->增加“查询执行超时时间”对应的值为 300s。
如果告警的查询组是INSTANCESTATUSTABLESPACESTATUS,并且如果在执行上述步骤后告警仍然存在,则检查底部内容,并在Oracle DBA的帮助下执行相应Oracle数据库中的步骤。
这个问题发生在INSTANCESTAUS/TABLESPACESTATUS上,因为对字典表DBA_FREE_SPACE的查询需要很长时间才能执行。
(1)Oracle支持团队对“DBA_FREE_SPACE的查询很慢(文档ID 271169.1)”说明了以下原因:
在版本10g中,DBA _FREE_SPACE视图被修改为也包括回收站中的对象。
回收站中的大量对象可以减慢DBA _FREE_SPACE上的查询速度。这是正常的行为。
对于版本11g,视图DBA _FREE_SPACE不包含提示,如果回收站中只有几个对象,您可能需要收集表/字典的底层统计信息以获得更好的性能。
运行以下查询并在回收站中检查计数:
SQL> SELECT count(*) FROM dba_recyclebin; 
如果计数较高,则使用以下命令清除回收站:
SQL> PURGE dba_recyclebin; 
(2)Oracle支持团队的下一个建议“如何收集'SYS'用户和'固定'对象拥有的对象的统计数据(Doc ID 457926.1),以收集字典和固定表的统计数据(在得到DBA允许的条件下)。
SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
SQL> EXEC DBMS_STATS.GATHER_FIXED_OBJECTS_STATS; 
对于启用多租户的Oracle,容器数据库和可插拔数据库需要独立清除。


    • Related Articles

    • 【APM】Oracle ‘OracleDiskGroupgs’查询组查询语句

      如出现: 1.由于此查询组导致套接字读取超时OracleDiskGroupgs 2.由于此查询组导致查询组超时OracleDiskGroupgs 首先编辑监视器,设置套接字超时时间和查询组超时时间为 300s。 如已设置为 300s,可通过在 Oracle DB 上执行下列查询,看执行时间: select GROUP_NUMBER,NAME,STATE,TYPE,TOTAL_MB,FREE_MB from V$ASM_DISKGROUP 如执行时间没有过久,并且上述超时时间已设置为 300s ...
    • 【APM】Oracle ‘OracleScheduledJobs’查询组查询语句

      如出现: 1.由于此查询组导致套接字读取超时OracleScheduledJobs 2.由于此查询组导致查询组超时OracleScheduledJobs 首先编辑监视器,设置套接字超时时间和查询组超时时间为 300s。 如已设置为 300s,可通过在 Oracle DB 上执行下列查询,看执行时间: select distinct a.JOB_NAME, STATUS, STATE as currentState, TO_CHAR(LAST_START_DATE, 'DD-MON-YYYY ...
    • 【APM】Oracle ‘OracleUsers’查询组查询语句

      如出现: 1.由于此查询组导致套接字读取超时OracleUsers 2.由于此查询组导致查询组超时OracleUsers 首先编辑监视器,设置套接字超时时间和查询组超时时间为 300s。 如已设置为 300s,可通过在 Oracle DB 上执行下列查询,看执行时间: SELECT USERNAME,CASE WHEN EXPIRY_DATE IS NOT NULL THEN TO_CHAR(EXPIRY_DATE,'DD-MON-YYYY HH24:MI:SS') END AS ...
    • 【APM】Oracle ‘INSTANCESTATUS’查询组查询语句

      如出现: 1.由于此查询组导致套接字读取超时INSTANCESTATUS 2.由于此查询组导致查询组超时INSTANCESTATUS 首先编辑监视器,设置套接字超时时间和查询组超时时间为 300s。 如已设置为 300s,可通过在 Oracle DB 上执行下列查询,看执行时间: SELECT COUNT(0) avg_users_cursor FROM v$session WHERE (username IS NOT NULL) AND (TYPE!='BACKGROUND') AND ...
    • 【APM】Oracle ‘OracleInvaildObjects’查询组查询语句

      如出现: 1.由于此查询组导致套接字读取超时OracleInvaildObjects 2.由于此查询组导致查询组超时OracleInvaildObjects 首先编辑监视器,设置套接字超时时间和查询组超时时间为 300s。 如已设置为 300s,可通过在 Oracle DB 上执行下列查询,看执行时间: SELECT OWNER, OBJECT_NAME, STATUS as OBJECT_STATUS FROM DBA_OBJECTS WHERE STATUS='INVALID' and ...