2012-02-22 19 views
7

आदेश ओरेकल एक की सुरक्षा सुविधा प्रदर्शित करने के लिए OCIServerVersion() या OCIServerRelease() जब उपयोगकर्ता सत्र अभी तक स्थापित नहीं किया गया कॉल करने के लिए है।अजगर cx_Oracle और सर्वर जानकारी

डेटाबेस पैरामीटर sec_return_server_release_banner = false होने के दौरान। मैं इसके लिए पाइथन cx_Oracle मॉड्यूल का उपयोग कर रहा हूं, लेकिन मुझे यकीन नहीं है कि कनेक्शन स्थापित करने से पहले सर्वर संस्करण कैसे प्राप्त करें। कोई विचार?

+1

cxOracle संस्करण प्राप्त करने के लिए ओसीआई फ़ंक्शंस का उपयोग नहीं करता है लेकिन कनेक्शन के बाद dbms_utility.db_version को कॉल करता है, इसलिए मुझे लगता है कि आप ऐसे उपयोगकर्ता के बिना नहीं कर सकते जिसके पास dbms_utility.db_version प्रक्रिया पर निष्पादन अनुमति है, आप ओसीआई क्लाइंट के साथ सीधे खेलकर cxoracle को बाईपास करने का प्रयास कर सकते हैं ctypes का उपयोग (cyoracle pypy ctypes का उपयोग करता है) – sherpya

+0

कनेक्ट फ़ंक्शन कनेक्शन कनेक्शन में कनेक्शन_कनेक्ट है। यह OCIServerAttach() को कॉल करता है लेकिन – sherpya

+1

https://bitbucket.org/pypy/pypy/src/ से पहले कुछ और कॉल करने के कोई तरीके नहीं हैं डिफ़ॉल्ट/pypy/मॉड्यूल/oracle/interp_connect.py यह rpython है, आपको सर्वरटाच के बाद ओसीआईएसवरवेरसन() को कॉल करना चाहिए, लेकिन मुझे नहीं पता कि cpython + ctypes – sherpya

उत्तर

0

आपके एसडब्ल्यू आर्किटेक्चर और क्रॉस प्लेटफॉर्म तैयार होने के आपके इरादे पर निर्भर करता है।

cx_Oracle ओरेकल क्लाइंट पर निर्भर है। तो आप सुनिश्चित हैं कि ज्ञात पथ पर ओरेकल क्लाइंट है। यहां तक ​​कि आप नियमित सत्र के लिए ओरेकल क्लाइंट का उपयोग नहीं करना चाहते हैं, आप इसे सर्वर की प्रारंभिक जांच के लिए उपयोग कर सकते हैं।

लिनक्स/यूनिक्स पर आप कोड निम्नलिखित उपप्रक्रिया में पड़ सकते है:

sqlplus user/[email protected] <<< "quit"| grep "Oracle Database"| head -n 1 

Grep और अन्य प्रसंस्करण अपने कोड में किया जा सकता है और Windows में यह आवश्यक है। कोड द्वारा आपको ओरेकल का संस्करण मिलेगा और आपको पता चलेगा कि कनेक्शन जानकारी सही है या नहीं।

+0

यह मानता है कि sqlplus स्थापित है। ओरेकल इंस्टेंटक्लिएंट (जो सिर्फ ओसीआई प्रदान करता है और इसलिए स्वयं को सीएक्सओरेकल के लिए पर्याप्त है) डिफ़ॉल्ट रूप से एसक्लप्लस के साथ नहीं आता है। – cowbert

0

कनेक्शन स्थापित करने के साथ-साथ। नहीं, आप कभी भी कुछ नहीं पूछ सकते हैं। यह Google पेज पर जा रहा है। (इंटरनेट आर्किटेक्चर - गीला आप इसे सत्र रहित या सत्र आधारित कहते हैं)

प्रामाणिक के लिए, यदि कोई अनुमति सेट नहीं है - ओरेकल उपयोगकर्ता के रूप में उपयोगकर्ता नाम 'कोई नहीं' का उपयोग करता है और इस प्रकार प्रत्येक उपयोगकर्ता को सत्र।

मैं ओरेकल एपेक्स का उपयोगकर्ता हूं, और मैं पायथन, पीएलएसक्यूएल रेगुरलरी का उपयोग करता हूं।

यह एक अच्छा सवाल है। धन्यवाद।

संबंधित मुद्दे