注册

执行sql造成DM8宕机问题

皮特 2024/06/24 464 6

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8, DB Version: 0x7000c
【操作系统】:CentOS Linux release 7.8.2003
【CPU】:Intel(R) Xeon(R) CPU E5-2609 v4 @ 1.70GHz
【问题描述】*:
当执行如下sql时, 必会造成DM8服务宕机.

SELECT COUNT(1) FROM (SELECT M.SDIMENSION_CODE, CASE WHEN M.SDIMENSION_CODE = 'EP' THEN '人员' WHEN M.SDIMENSION_CODE = 'PJ' THEN '项目' WHEN M.SDIMENSION_CODE = 'DP' THEN '部门' WHEN M.SDIMENSION_CODE = 'PC' THEN '客商' WHEN M.SDIMENSION_CODE = 'SBPDP' THEN '客商部门' WHEN M.SDIMENSION_CODE = 'CU' THEN '币种' ELSE O.SDIMENSION END AS SDIMENSION_NAME, M.SDIMENSION_PRO_CODE, M.SDIMENSION_PRO_NAME, CASE WHEN M.SDIMENSION_CODE = 'CU' THEN 0.1 WHEN M.SDIMENSION_CODE = 'PC' THEN 0.2 WHEN M.SDIMENSION_CODE = 'PJ' THEN 0.3 WHEN M.SDIMENSION_CODE = 'DP' THEN 0.4 WHEN M.SDIMENSION_CODE = 'SBPDP' THEN 0.5 WHEN M.SDIMENSION_CODE = 'EP' THEN 0.6 ELSE O.NSORTNUM END AS NSORTNUM FROM GL_ACCOUNT_SA_S M JOIN (SELECT REPLACE(REGEXP_SUBSTR(E.SCOMBINE, '[^,]+', 1, LEVEL), '@', '') SDIMENSION_CODE FROM (SELECT CASE WHEN INSTR(B.SCOMBINE, '@' || 'CU' || '@') > 0 THEN B.SCOMBINE ELSE 'CU' END SCOMBINE FROM GL_ACCPRINT_CONF A LEFT JOIN (SELECT K.SCOMPANYCODE, K.SYEAR, K.SACCCODE, LISTAGG('@' || SDIMENSION_CODE || '@', ',') WITHIN GROUP (ORDER BY SACCCODE) SCOMBINE FROM (SELECT J.SCOMPANYCODE, J.SYEAR, J.SACCCODE, REGEXP_SUBSTR(J.SCOMBINE, '[^,]+', 1, LEVEL) SDIMENSION_CODE FROM (SELECT * FROM GL_ACCPRINT_CONF_M WHERE SCOMPANYCODE = '2BJ1402066' AND SYEAR = '2024' AND SACCCODE = '1012-8-1') J CONNECT BY LEVEL <= REGEXP_COUNT(J.SCOMBINE, '[^,]+')) K GROUP BY K.SCOMPANYCODE, K.SYEAR, K.SACCCODE) B ON A.SCOMPANYCODE = B.SCOMPANYCODE AND A.SYEAR = B.SYEAR AND A.SACCCODE = B.SACCCODE WHERE A.SYEAR = '2024' AND A.SCOMPANYCODE = '2BJ1402066' AND A.SACCCODE = '1012-8-1' AND A.SDIMENSION_CODE = 'CU') E CONNECT BY LEVEL <= REGEXP_COUNT(E.SCOMBINE, '[^,]+')) N ON M.SDIMENSION_CODE = N.SDIMENSION_CODE LEFT JOIN GL_DIMESION O ON O.SCOMPANYCODE = M.SCOMPANYCODE AND O.SYEAR = M.SYEAR AND O.SDIMENSION_CODE = M.SDIMENSION_CODE JOIN (SELECT SDIMENSION_CODE, SDIMENSION_PRO_CODE FROM (SELECT SDIMENSION_CODE, SDIMENSION_PRO_CODE FROM GL_VOUCER_S UNPIVOT (SDIMENSION_PRO_CODE FOR SDIMENSION_CODE IN (SCREDIT_CODE AS 'PC', SCURRENCY_CODE AS 'CU', SDEPT_CODE AS 'DP', SPORJECT_CODE AS 'PJ', SEMPLOYEE_CODE AS 'EP', SBPDP_CODE AS 'SBPDP')) WHERE SCOMPANYCODE = '2BJ1402066' AND SYEAR = '2024' AND SACCCODE = '1012-8-1' AND SPERIOD_CODE BETWEEN '2024-01' AND '2024-06' UNION ALL SELECT F.SDIMENSION_CODE, F.SPROP_VALUE SDIMENSION_PRO_CODE FROM GL_VOUCER_S S JOIN GL_VOUCHER_F F ON S.SCOMPANYCODE = F.SCOMPANYCODE AND S.SDOC_ID = F.SDOC_ID AND S.SPERIOD_CODE = F.SPERIOD_CODE AND S.IDOC_LINE_ID = F.IDOC_LINE_ID WHERE S.SCOMPANYCODE = '2BJ1402066' AND S.SYEAR = '2024' AND S.SACCCODE = '1012-8-1' AND S.SPERIOD_CODE BETWEEN '2024-01' AND '2024-06' UNION ALL SELECT B.SDIMENSION_CODE, B.SPROP_VALUE SDIMENSION_PRO_CODE FROM GL_AUX_BALANCE A JOIN GL_AUX_RELATION B ON A.SCOMPANYCODE = B.SCOMPANYCODE AND A.SACCCODE = B.SACCCODE AND A.SYEAR = B.SYEAR AND A.SRELATION_ID = B.SRELATION_ID WHERE A.SCOMPANYCODE = '2BJ1402066' AND A.SYEAR = '2024' AND A.SACCCODE = '1012-8-1' AND A.SPERIOD_CODE BETWEEN '2024-01' AND '2024-06' AND NVL(A.NOPEN, 0) <> 0) GROUP BY SDIMENSION_CODE, SDIMENSION_PRO_CODE) P ON M.SDIMENSION_CODE = P.SDIMENSION_CODE AND M.SDIMENSION_PRO_CODE = P.SDIMENSION_PRO_CODE WHERE M.SYEAR = '2024' AND M.SCOMPANYCODE = '2BJ1402066' AND M.SACCCODE = '1012-8-1') LEFT JOIN GL_SBP_M GS ON SDIMENSION_CODE = 'PC' AND GS.SCREDIT_CODE = SDIMENSION_PRO_CODE AND GS.SCOMPANYCODE = '2BJ1402066';

DM8服务宕机后.在bin目录产生了core文件, 我通过gdb工具分析了core文件的相关堆栈信息,

su - dmdba cd /home/dmdba/dmdbms/bin gdb ./dmserver /xx/coredump/core.dmserver.xxxxxx set logging file /home/dmdba/core_stack.log set logging on thread apply all bt set logging off

将core文件里面的SQL打印到文本文件中,步骤:
/bin下执行

./dmrdc sfile=/xx/coredump/core.dmserver.xxxxxx dfile=/home/dmdba/core_sql.txt

然后将core_stack.log和core_sql.txt 上传了.

请DM工程给看看,到底服务器出现了什么问题.一个sql就能引起服务宕机!

core_sql.txt
core_stack.txt
同时,我用dmdbchk工具做了检查, 报告中也没有发现错误.

回答 0
暂无回答
扫一扫
联系客服