前期請開發測試11G測試庫都很正常,決定正式升級
昨天早上開發打電話來,User反映導PPID很慢,程式會僵死,登上GridControl一看,發現有鎖表現象。
程式首先執行Update,後執行Insert,Insert被Update Block了
/* Formatted on 2011/12/20 上午 10:57:09 (QP5 v5.163.1008.3004) */
UPDATE pm_vendorshippingdetail1
SET receivingno = '2RN-1C0002',
receivingdate = SYSDATE,
receivingflag = 'Y'
WHERE serialno IN
( SELECT serialno
FROM pm_vendorshippingdetail1
START WITH parentserialno IN (SELECT serialno
FROM im_movelist
WHERE docno = '2RN-1C0002')
CONNECT BY PRIOR serialno = parentserialno
UNION
SELECT serialno
FROM pm_vendorshippingdetail1
START WITH serialno IN (SELECT serialno
FROM im_movelist
WHERE docno = '2RN-1C0002')
CONNECT BY PRIOR parentserialno = serialno)
AND receivingflag = 'N';
/* Formatted on 2011/12/21 上午 09:43:12 (QP5 v5.163.1008.3004) */
INSERT INTO im_inventorydetail (serialno,
pn,
revision,
plantno,
whseno,
locationno,
lotno,
binno,
packingtype,
unitcode,
qty,
invunitcode,
receivingno,
receivingitemno,
vendorcode,
scanindate,
statuscode)
SELECT serialno,
pn,
revision,
plantno,
whseno,
locationno,
lotno,
binno,
packingtype,
unitcode,
qty,
invunitcode,
receivingno,
receivingitemno,
vendorcode,
scanindate,
statuscode
FROM im_movelist
WHERE docno = '2RN-1C0002' AND docitemno = '1.00';
GridControl中看Update執行時間超過10分鐘仍然沒完,把Update SQL拷貝到Toad中繼續研究
Update的pm_vendorshippingdetail1表上serialno有索引,單純Update速度應該很快,外層的問
題可以排除掉。再看裡面的嵌套SQL,這個嵌套SQL有一個UNION連接前後兩段
SELECT serialno
FROM pm_vendorshippingdetail1
START WITH parentserialno IN (SELECT serialno
FROM im_movelist
WHERE docno = '2RN-1C0002')
CONNECT BY PRIOR serialno = parentserialno
UNION
SELECT serialno
FROM pm_vendorshippingdetail1
START WITH serialno IN (SELECT serialno
FROM im_movelist
WHERE docno = '2RN-1C0002')
CONNECT BY PRIOR parentserialno = serialno
單獨執行UNION前段速度很快,單獨執行UNION後段速度無法忍受,看來問題就在UNION後段
/* Formatted on 2011/12/21 上午 09:52:05 (QP5 v5.163.1008.3004) */
SELECT serialno
FROM pm_vendorshippingdetail1
START WITH serialno IN (SELECT serialno
FROM im_movelist
WHERE docno = '2RN-1C0002')
CONNECT BY PRIOR parentserialno = serialno
這段的執行計劃竟然有個INDEX FULL SCAN。。。所有的Loading應該都在這裡。




WMS1.JPG