Oracle के लिए सेवा नाम नहीं बदल सकता


9

मैं 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;

क्या मैं अब दोनों का कारण हो सकता है?

लेकिन केवल एक ही नाम के लिए सेवा_नाम बदलने के बाद, दूसरा व्यक्ति दूर हो जाना चाहिए था, है न?

अगर मैं दूसरी सेवा को समाप्त नहीं कर सकता, तो यह लंबे समय के बजाय लघु सेवा नाम का उपयोग करके श्रोता के साथ उदाहरण रजिस्टर करने के लिए पर्याप्त होगा।

मुझे यकीन है कि मुझे कुछ स्पष्ट याद आ रहा है, लेकिन मैं यह पता नहीं लगा सकता कि यह क्या है।

जवाबों:


5

मुझे यकीन है कि मुझे कुछ स्पष्ट याद आ रहा है, लेकिन मैं यह पता नहीं लगा सकता कि यह क्या है।

हाँ यह बहुत स्पष्ट था ...

पैरामीटर में DB_DOMAINअभी भी निहित है foo.barऔर इसलिए उदाहरण का उपयोग करके खुद को पंजीकृत किया गया है mydb.foo.bar

करने के बाद ए

alter system set db_domain='' scope=spfile; 

और डेटाबेस को उछाल कर सब कुछ अब उम्मीद के मुताबिक काम कर रहा है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.