故障时间:2014年7月15日9点-16点
故障描述:服务器CPU占用资源高达90%-99%,内存占用7.2GB,系统运行慢。
处理过程:
1. 查看系统性能浏览器发现CPU确实占用高
2. 通过ORACLE工具发现数据库运行正常只是CPU占用高
3. 通过ARW报告发现CPU大量资源耗费在SQL语句解释上(硬解释太大)
4. 下钻语句发现TOP 5事件中前3面事件的SQL为同一条,并且耗费较长时间,从而证明全表扫描情况严重(15条事件同一条语句出现11条)
5. SQL语句如下:
select count(*) total from ( SELECT A.ZHCM_SSDQ,A.ZHRM_SQ_ZYB, A.ZHRM_SQ_ZYB_NAME, A.ZHCM_CSMC, A.ZHCM_CSJB_CODE, A.ZHCM_CSJB,A.ZHCM_XTMC_M, A.ZHCM_MDMC, A.ZHCM_MDBHA, A.ZHCM_MDDZ, A.PLANS, A.ZHCM_DGXZ,A.DGXZNAME, A.DEALER_NO, A.DEALER_NAME, A.ZHCM_DGYLX, A.PERNR, A.NAME, A.NACHN,A.VORNA, A.ICNUM, A.SEX, A.GESCH, A.AGE, TO_CHAR(A.GBDAT, 'YYYY-MM-DD') GBDAT,A.EDUCATIONAL, A.ZHCM_XLXL, A.HKXZ, A.ZZHCM_HKLX, A.LOCAT_1, A.USRID,A.LOCAT_2, A.FANAM, A.FAVOR, A.JJ_NAME, A.ZZHCM_GX, A.ZZHCM_GX_DES, A.ZZHCM_SJ,A.ZZHCM_DZ, A.ZZHCM_BXLX, A.BXLX_DES, TO_CHAR(A.BEGDA, 'YYYY-MM-DD') BEGDA,TO_CHAR(A.ENDDA, 'YYYY-MM-DD') ENDDA, A.CTTYP, A.CTTYP_DES, A.NMF01,TO_CHAR(A.DAT03, 'YYYY-MM-DD') DAT03, TO_CHAR(A.DATEND, 'YYYY-MM-DD') DATEND,TO_CHAR(A.CTBDT, 'YYYY-MM-DD') CTBDT, TO_CHAR(A.CTEDT, 'YYYY-MM-DD') CTEDT,A.ZHCM_SSLW, A.BKREF, A.BANKL, A.ZWECK, A.BANKL_DES, A.PICTURE,A.IS_CHARGEHAND, A.IS_DAY_ZUZHANG, A.IS_MANAGER, A.GRADE, A.ZZHCM_RHJL,A.ZZHCM_RHJL_CODE, A.STAT2, A.ZHRM_DDGH, A.CNAME, A.STOP_INSURANCE_DATE,A.WORK_DAYS, A.DAILY_WAGE, A.DEFNUM, A.DEFSTR, A.PFFL1, A.PFFL2, A.PFFL3 FROMV_ROSTER A WHERE (a.zhrm_sq_zyb in (select pb_pro_user.provincesid frompb_provinces_userpb_pro_user where pb_pro_user.user_id = 'chenwany')) and 1=1AND (A.STAT2 = '在职') ORDER BY A.NAME ASC )abcdefg
6. 跳出系统单独用PL/sql查询发现花10分钟都不能查出数据
7. 去除某一条件发现可以查出
in (select pb_pro_user.provincesid frompb_provinces_userpb_pro_user where pb_pro_user.user_id = 'chenwany'))
8. 初步判断是否由于“T_DATA_03_13”表出现索引丢失
9. 在系统环境下通过执行计划发现问题所在
处理方法:通过对门店资料表添加索引,故障马上解决。
create index IDX_T_DATA_03_13_ZHCM_MDBH on T_DATA_03_13 (ZHCM_MDBH);
疑问:
这个门店主数据表 T_DATA_03_13数据没有变动过,而且只有3000条数据, 这个索引为什么必须要建立? 而且不建立会导致整台服务器的CPU爆满?
请大神们一起研究分析!