मैं Windows 2003 सर्वर पर Oracle 11.2.0.3 इंस्टॉलेशन का सेवा नाम बदलने का प्रयास कर रहा हूं।
स्थापना के दौरान सेवा का नाम डिफ़ॉल्ट डोमेन के साथ परिभाषित किया गया था, लेकिन हम इससे छुटकारा पाना चाहते हैं।
मैंने अब तक क्या किया है (और पहले क्या काम किया है) केवल सेवा नाम बदलने के mydb.foo.bar
लिए mydb
:
alter system set service_names = 'mydb' scope = both;
alter database rename global_name to mydb;
जो काम करने लगता है:
SQL> शो पैरामीटर नाम नाम टाइप करें ------------------------------------ ----------- --- --------------------------- db_name स्ट्रिंग mydb db_unique_name स्ट्रिंग mydb Global_names बूलियन FALSE inst_name स्ट्रिंग mydb service_names string mydb एसक्यूएल>
(मैंने उपरोक्त आउटपुट से कुछ संपत्तियों को हटा दिया जो प्रासंगिक नहीं हैं)
फिर alter system register
श्रोता के साथ फिर से पंजीकरण करने के लिए उपयोग करें।
इसका कोई प्रभाव नहीं दिखा, इसलिए मैंने डेटाबेस और श्रोता को फिर से शुरू किया, फिर भी कोई भाग्य नहीं था।
वर्तमान स्थिति इस प्रकार है:
select name from v$active_services
रिटर्न:
SERVICE_ID | NAME | नेटवर्क का नाम ----------- + ----------------- + -------------------- 1 | एसवाईएस $ बैकग्राउंड | 2 | SYS $ USERS | 3 | mydb | mydb 5 | mydbXDB | mydbXDB 6 | mydb.foo.bar | mydb.foo.bar
तो किसी कारण से पुरानी सेवा का नाम अभी भी है और चल रहा है।
जब सेवा का उपयोग बंद करने की कोशिश कर रहा है
SQL> exec dbms_service.stop_service ('mydb.foo.bar'); PL / SQL प्रक्रिया सफलतापूर्वक पूर्ण हुई।
कोई त्रुटि की सूचना नहीं है, लेकिन जब सेवा को हटाने की कोशिश की जा रही है, तो ओरेकल मुझे नहीं जाने देगा:
SQL> exec dbms_service.delete_service ('mydb.foo.bar'); BEGIN dbms_service.delete_service ('mydb.foo.bar'); समाप्त; * पंक्ति 1 पर त्रुटि: ORA-44305: सेवा mydb.foo.bar चल रही है ORA-06512: "SYS.DBMS_SYS_ERROR" पर, लाइन 86 ORA-06512: "SYS.DBMS_SERVICE" पर, पंक्ति 454 ORA-06512: "SYS.DBMS_SERVICE" पर, लाइन 343 ORA-06512: लाइन 1 पर
मैंने सत्यापित किया कि मेरे पास उस सेवा का उपयोग करने के लिए कोई खुला कनेक्शन नहीं है:
select count(*)
FROM v$session
where service_name = 'mydb.foo.bar';
लौटाया गया 0
(शून्य)
मैंने oradim का उपयोग करके Windows सेवा को फिर से बनाया, लेकिन कोई फायदा नहीं हुआ।
एक बिंदु पर मैं भाग गया
alter system set service_names = 'mydb,mydb.foo.bar' scope = both;
क्या मैं अब दोनों का कारण हो सकता है?
लेकिन केवल एक ही नाम के लिए सेवा_नाम बदलने के बाद, दूसरा व्यक्ति दूर हो जाना चाहिए था, है न?
अगर मैं दूसरी सेवा को समाप्त नहीं कर सकता, तो यह लंबे समय के बजाय लघु सेवा नाम का उपयोग करके श्रोता के साथ उदाहरण रजिस्टर करने के लिए पर्याप्त होगा।
मुझे यकीन है कि मुझे कुछ स्पष्ट याद आ रहा है, लेकिन मैं यह पता नहीं लगा सकता कि यह क्या है।