Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle.DataAccess.Client.OracleException ORA-03135:कनेक्शन खो गया संपर्क

ऐसा इसलिए होता है क्योंकि आपका कोड Oracle कनेक्शन पूल से कनेक्शन का अनुरोध करता है और कनेक्शन पूल Oracle DB को एक डिस्कनेक्ट / पुराना कनेक्शन देता है। ODP.NET क्लाइंट को भेजे गए कनेक्शन की कनेक्शन स्थिति का स्वयं परीक्षण नहीं करता है।

तो सुरक्षित रहने के लिए, या तो आप connection status == Open . की जांच करें जब आप कनेक्शन करते हैं तो पूल से प्राप्त कनेक्शन के लिए। ओपन ()

या

ODP.NET को Validate Connection = true . सेट करके आपके लिए जाँच करने दें web.config में आपके कनेक्शन स्ट्रिंग में।

इन दोनों विधियों का प्रदर्शन पर प्रभाव पड़ता है क्योंकि जब भी आपको डेटाबेस से कनेक्ट करने की आवश्यकता होती है तो वे कनेक्शन स्थिति का परीक्षण करते हैं।

एक तीसरा विकल्प जिसका मैं उपयोग करता हूं वह है अपवादों का उपयोग। पहले आशावादी बनें और कनेक्शन पूल से जो भी कनेक्शन लौटाया जाता है उसका उपयोग करें। यदि आपको ORA-3135 मिलता है तो एक नए कनेक्शन का अनुरोध करें और अपनी क्वेरी को थोड़ी देर के लूप की तरह फिर से निष्पादित करें। सर्वोत्तम स्थिति में, आप अपना पहला कनेक्शन मान्य के रूप में प्राप्त कर सकते हैं और आपकी क्वेरी निष्पादित हो जाएगी। सबसे खराब स्थिति में, आपके पूल के सभी कनेक्शन पुराने हैं, इस स्थिति में कोड को N समय पर निष्पादित किया जाएगा (जहां N कनेक्शन पूल का आकार है)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सीडी:-एम:अमान्य विकल्प

  2. SQL में 2 दशमलव स्थानों तक गोल करना

  3. Oracle अनुक्रम निरंतर संख्या उत्पन्न नहीं कर रहा है

  4. Oracle 9i एक खाली स्ट्रिंग को NULL के रूप में क्यों मानता है?

  5. Mac पर Oracle के Java को समझना