हमारे पास जावा वर्कफ़्लो एप्लिकेशन है जो ओरेकल डेटाबेस का उपयोग करता है ताकि अन्य चरणों के साथ अपने चरणों और बातचीत को ट्रैक किया जा सके। वर्कफ़्लो चलाने के दौरान कई डालने/अपडेट/चयन किए जाते हैं और कभी-कभी चयन अद्यतन डेटा वापस नहीं करेगा, भले ही इसे सफलतापूर्वक पूरा करने से पहले सम्मिलित/अद्यतन प्रतिबद्धता हो। वर्कफ़्लो त्रुटियों के बाद (खराब डेटा के कारण), यदि हम वापस जाते हैं और किसी तृतीय पक्ष ऐप के माध्यम से डेटाबेस की जांच करते हैं तो नया/अपडेट किया गया डेटा दिखाई देगा। जब हमारे काम चलते हैं और जब वे दिखाई देते हैं तो बीच में एक अंतराल लगता है। यह लगभग वर्कफ़्लो रनों का लगभग 2% होता है और यह भारी डेटाबेस उपयोग के दौरान बढ़ता है।प्रतिबद्धता के बीच ओरेकल अंतराल और
हमारी डेटाबेस समर्थन टीम ने पैरामीटर अधिकतम-प्रतिबद्धता-प्रसार-देरी 0 को बदलने के लिए सुझाव दिया है, क्योंकि यह 700 तक डिफ़ॉल्ट है। यह एक संभावित समाधान प्रतीत होता है लेकिन आखिरकार हमारी समस्या ठीक नहीं हुई।
एप्लिकेशन वेबस्पेयर पर चलता है और ओरेकल डेटाबेस को जेडीबीसी डेटासोर्स के रूप में कॉन्फ़िगर किया जाता है। हम ओरेकल 10.1 जी का उपयोग कर रहे हैं। एप्लिकेशन जावा 1.5 में लिखा गया है।
किसी भी मदद की सराहना की जाएगी।
संपादित करें: नमूना कोड
DataSource ds; // spring configured
String sql = "INSERT INTO " + currentTable + " (" + stepId + ',' + stepEntryId + ", " + stepStepId + ", " + stepActionId + ", " + stepOwner + ", " + stepStartDate + ", " + stepDueDate + ", " + stepFinishDate + ", " + stepStatus + ", " + stepCaller + ") VALUES (?, ?, ?, null, ?, ?, ?, null, ?, null)";
Connection conn = ds.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql);
// set values
stmt.executeUpdate();
// close connections
// later on in the code...
Connection conn = ds.getConnection();
PreparedStatement stmt = null;
ResultSet rset = null;
String sql = "SELECT " + stepId + ", " + stepStepId + ", " + stepActionId + ", " + stepOwner + ", " + stepStartDate + ", " + stepDueDate + ", " + stepFinishDate + ", " + stepStatus + ", " + stepCaller + " FROM " + currentTable + " WHERE " + stepEntryId + " = ?";
stmt = conn.prepareStatement(sql);
stmt.setLong(1, entryId);
rset = stmt.executeQuery();
//close connections
[ओरेकल दस्तावेज़ीकरण] से (http://download.oracle.com/docs/cd/B14117_01/server.101/b10755/initparams115.htm), ऐसा लगता है कि पैरामीटर 'max_commit_propagation_delay' केवल आरएसी सेटअप के लिए लागू होता है। क्या आप आरएसी इंस्टेंस से जुड़ रहे हैं? –
क्या डेटा लेनदेन के हिस्से के रूप में किया जा रहा है? या पढ़ा? –