2009-10-23 10 views
13

ओरेकल से कनेक्ट करते समय जेडीबीसी चालक खुद को ओरेकल ("$ कार्यक्रम के रूप में वी $ सत्र में) के रूप में" जेडीबीसी पतला ग्राहक "के रूप में पहचानता है। वी $ सत्र में 'क्लाइंटइन्फो' कॉलम भी है जिसका उपयोग इसके लिए किया जा सकता है, लेकिन यह हमेशा खाली रहता है।ओरेकल जेडीबीसी पतला ग्राहक पहचानकर्ता बदलें

हमें ओरेकल से कनेक्ट होने वाले विभिन्न अनुप्रयोगों की पहचान करने की आवश्यकता है (जो एक ही मेजबान पर चल रहे हैं, इसलिए वी $ सत्र में 'मशीन' कॉलम समान है), तो क्या यह बदलना संभव है कि ओरेकल जेडीबीसी पतला ग्राहक चालक खुद को पहचानता है (इसलिए हम आवेदन नाम को उदाहरण के लिए डाल सकते हैं)?

या ऐसा करने के लिए कोई अनुशंसित तरीका है? एक प्रतिबंध यह है कि हम कुछ अनुप्रयोगों के लिए स्ट्रैट्स के भीतर ऐसा कर रहे हैं, जो आंतरिक रूप से कनेक्शन सेटअप को संभालने में कामयाब रहे हैं।

+1

संभावित डुप्लिकेट [मैं अपने जावा एप्लिकेशन को कनेक्शन पर ओरेकल में कैसे पहचानूं?] (Http://stackoverflow.com/questions/1548400/how-do-i-make-my-java-plication-identify -इस-टू-ऑरैक-ऑन-कनेक्शन) – derobert

उत्तर

18

[Identical to this answer]

java.util.Properties props = new java.util.Properties(); 
props.setProperty("password","mypassword"); 
props.setProperty("user","myusername"); 
props.put("v$session.osuser", System.getProperty("user.name").toString()); 
props.put("v$session.machine", InetAddress.getLocalHost().getCanonicalHostName()); 
props.put("v$session.program", "My Program Name"); 
DriverManager.registerDriver (new oracle.jdbc.OracleDriver()); 
Connection conn= 
    DriverManager.getConnection("jdbc:oracle:thin:@myhostname:1521:mysid", props); 

SQL>select username,osuser,program,machine 
from v$session 
where username = 'ROB'; 

USERNAME OSUSER  PROGRAM    MACHINE 
--------- ----------- ------------------ ----------- 
ROB  rmerkw  My Program Name  machine 

आप निम्न विधियों का उपयोग कर सकते हैं आवेदन स्तर पर स्थापित करने के लिए client_info, मॉड्यूल और वी $ सत्र में कार्रवाई:

012,351

dbms_application_info.set_client_info('Client Info'); 

जो v $ सत्र में ClientInfo स्तंभ सेट:

dbms_application_info.set_client_info 
dbms_application_info.set_module 
dbms_application_info.set_action 
+0

चीयर्स, जो कुछ अनुप्रयोगों के लिए मदद करनी चाहिए - क्या यह ओरेकलकनेक्शनपूलडाटासोर्स के साथ काम करता है? मैं देखता हूं कि वहां एक सेटकनेक्शन प्रॉपर्टीज विधि है। क्या मुझे सूचीबद्ध सभी फ़ील्ड निर्दिष्ट करना है, भले ही मैं .setUser(), .setPassword(), आदि, OracleConnectionPoolDataSource पर विधियों का उपयोग कर रहा हूं? – JeeBee

+1

मुझे पता है कि यह OracleConnectionPoolDataSource पर काम करता है। यह बहुत समय पहले है इसलिए मुझे विशिष्टताओं को याद नहीं है। setConnectionProperties एक java.util.Properties एक तर्क के रूप में लेता है। ऐसा नहीं लगता कि यह उपयोगकर्ता और पासवर्ड को .setUser(), .setPassword() से पहले सेट करता है। क्या मुझे समझ में आता है? ;-) –

+0

हाय! हां, यह समझ में आता है, और यह केवल v $ session.program सेट के साथ काम करता है। चीयर्स। – JeeBee

2

वहाँ भी एक Oracle कार्य है।

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