檢查DB時,一個job 從執行了9個小時還在運行,從v$session_wait 根據sid查看 存在SQL*Net more data from dblink 等待事件,查看job執行的存儲過程

,卡在一個cursor:

CURSOR C1

IS

SELECT equip_nbr,

equip_grp,

code code,

start_time,

FLOOR

FROM (SELECT DISTINCT

a.equip_nbr equip_nbr,

a.equip_grp equip_grp,

a.code code,

a.start_time start_time,

FLOOR,

ROW_NUMBER ()

OVER (PARTITION BY a.equip_nbr, a.start_time

ORDER BY a.equip_nbr, a.start_time DESC)

row_id

FROM PHABSDA1.HBASEQP_EQSUM@PHARS A,

(  SELECT equip_nbr, MAX (start_time) max_time

FROM BS_EQPHIST@phamw

WHERE start_time < S_FR_STAMP

GROUP BY equip_nbr) b

WHERE a.start_time = b.max_time AND a.equip_nbr = b.equip_nbr)

UNION

SELECT DISTINCT S.EQUIP_NBR,

P.EQUIP_GRP,

S.CODE,

S.START_TIME,

FLOOR

FROM    BS_EQPHIST@phamw S

LEFT JOIN

(SELECT DISTINCT FAC_ID,

EQUIP_GRP,

EQUIP_NBR,

FLOOR

FROM PHABSDA1.HBASHIS_EQPS@PHARS) P

ON S.EQUIP_NBR = P.EQUIP_NBR

WHERE START_TIME > S_FR_STAMP AND START_TIME <= S_TO_STAMP

ORDER BY EQUIP_NBR, START_TIME;

連接遠端數據庫 PHARS,phamw ,發現在PHARS 一直存在SQL*Net more data to client 等待事件 ,當前的SQL語句是:

SELECT   "EQUIP_NBR",

"EQUIP_GRP",

"CODE",

"START_TIME",

"FLOOR"

FROM   "PHABSDA1"."HBASEQP_EQSUM" "A"

所以我覺得job 應該卡在這一段SQL:

SELECT DISTINCT

a.equip_nbr equip_nbr,

a.equip_grp equip_grp,

a.code code,

a.start_time start_time,

FLOOR,

ROW_NUMBER ()

OVER (PARTITION BY a.equip_nbr, a.start_time

ORDER BY a.equip_nbr, a.start_time DESC)

row_id

FROM PHABSDA1.HBASEQP_EQSUM@PHARS A,

(  SELECT equip_nbr, MAX (start_time) max_time

FROM BS_EQPHIST@phamw

WHERE start_time < S_FR_STAMP

GROUP BY equip_nbr) b

WHERE a.start_time = b.max_time AND a.equip_nbr = b.equip_nbr)

但我發現,根據存儲的邏輯,我給變量 S_FR_STAMP 賦予一個合適的值后,把SQL語句放在sqlplus 中執行十幾秒就執行完了,我就弄不明白為什麼job 就一直卡在SQL*Net more data from dblink  等待事件上,大家能幫忙看看嗎

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐