/*+DRIVING_SITE(rd)*/ संकेत MERGE के साथ काम नहीं करता है क्योंकि ऑपरेशन उस डेटाबेस में चलना चाहिए जहां मर्ज की गई तालिका बैठती है। जो इस मामले में स्थानीय डेटाबेस है। यानी संपूर्ण परिणाम सेट दूरस्थ तालिका से डेटाबेस लिंक पर खींचा जाता है और फिर स्थानीय तालिका से डेटा के विरुद्ध फ़िल्टर किया जाता है।
तो, संकेत त्यागें। मेरा यह भी सुझाव है कि आप IN क्लॉज को जॉइन में बदलें:
Merge into project p
using (select rp.projectID,
rp.otherdata
FROM Project ld
inner join example@sqldat.com rd
on rd.projectID = ld.projectID
where ld.LastUpdated < (sysdate - 6/24)) q
-- This select in the in clause one returns 10 rows. Its a test database.
On (q.projectID = p.projectID)
)
कृपया ध्यान रखें कि पर्याप्त विवरण के बिना प्रदर्शन ट्यूनिंग प्रश्नों के उत्तर केवल अनुमान . हैं ।