2010-03-04 5 views
21

मैं उत्सुक था कि ओरलस जेडीबीसी पतला ग्राहक क्वेरी टाइमआउट कैसे कार्यान्वित करता है। इसे java.sql.Statement के setQueryTimeout (int सेकेंड) विधि को कॉल करके सेट किया जा सकता है।ओरेकल के जेडीबीसी क्वेरी टाइमआउट को कैसे लागू किया गया है?

क्या यह ड्राइवर में क्लाइंट पक्ष पर ही लागू होता है? नया धागा पैदा हुआ और शामिल हो गया है? या क्या जेडीबीसी चालक बस ओरेकल को पैरामीटर भेजता है, और फिर यह टाइमआउट को लागू करता है?

टाइमआउट पहुंचने के बाद, ग्राहक पर कौन से संसाधन और डेटाबेस जारी किए जाते हैं, और जो आसपास लटकते हैं? क्या ओरेकल को क्वेरी चलाने के लिए जारी रखता है, भले ही क्लाइंट ने इसे छोड़ दिया हो या समाप्त हो गया हो? क्या क्लाइंट पक्ष पर अभी भी एक कर्सर ऑब्जेक्ट है?

आप

उत्तर

11

टनेल पॉडर ने ओसीआई (ओरेकल कॉल इंटरफेस) के माध्यम से रद्द करने के तरीके पर article लिखा था। मुझे लगता है कि जेडीबीसी के लिए कुछ ऐसा ही किया जाता है। यदि आप ओसीआई के माध्यम से मोटी चालक का उपयोग कर रहे हैं, तो आप सत्र का पता लगाने की कोशिश कर सकते हैं (सेटिंग्स sqlnet.ora के माध्यम से) और देखें कि क्या रिकॉर्ड किया जाता है।

+0

तो, क्या इसका मतलब यह है कि जेडीबीसी चालक क्वेरी के लिए एक और चाल फैलता है और इसके लिए इंतजार कर रहा है, और फिर ओसीआईसीएनसीएल भेजता है? – oneself

+0

यह नहीं कह सकता कि यह एक अलग धागा है या सिर्फ एक लूप है "सर्वर से कुछ भी ... क्या यह समय समाप्त हो गया है ... सर्वर से कुछ भी ... क्या यह समय समाप्त हो गया है ...." –

1

मुझे पता है कि क्वेरी जब टाइमआउट तक पहुँच जाता है सर्वर साइड पर जारी रखने के लिए नहीं है धन्यवाद। समय-समय पर या बाद में सर्वर पर भेजे गए कुछ इरादे/सिग्नल विकल्प को इंगित करने के लिए सर्वर को रोकना चाहिए। क्वेरी को चल रहा है या नहीं, यह देखने के लिए मैंने विभिन्न V $ तालिकाओं में सर्वर को देखकर इसे सत्यापित कर लिया है। (वी $ सत्र, वी $ एसक्यूएल, आदि)

2

जब सेटटाइमऑट विधि का उपयोग करते समय वास्तव में एक क्वेरी होती है, ओरेकल त्रुटि कोड ORA-01013 - user requested cancel of current operation के साथ एक SQL अपवाद ऑरैकल सर्वर से फेंक दिया जाता है।

इसका मतलब यह होगा कि ऑपरेशन को (जहां तक ​​ओरेकल चिंतित/उतना ही ऑरैकल कर सकता है) रद्द कर दिया गया है - क्योंकि यह ऑर्केकल इस संदेश को भेज रहा है।

15
Oracle JDBC FAQ

वक्तव्य टाइमआउट धागा के अनुसार

। यह थ्रेड बनाया गया है यदि आप किसी टाइमआउट के साथ कोई कथन निष्पादित करते हैं। केवल एक धागा बनाया गया है चाहे कितने बयान या कनेक्शन हों। यह धागा वीएम के जीवनकाल तक रहता है।