Nie można zmienić nazwy usługi dla Oracle

9

Próbuję zmienić nazwę usługi instalacji Oracle 11.2.0.3 na serwerze z systemem Windows 2003.

Podczas instalacji nazwa usługi została zdefiniowana w domenie domyślnej, ale chcielibyśmy się tego pozbyć.

Co mam zrobić tak daleko (i co pracował wcześniej), aby zmienić nazwę usługi mydb.foo.bar, aby mydbtylko:

alter system set service_names = 'mydb' scope = both;
alter database rename global_name to mydb;

Co wydaje się działać:

SQL> pokaż nazwę parametru

NAZWA TYP WARTOŚĆ
------------------------------------ ----------- --- ---------------------------
db_name string mydb
db_unique_name string mydb
global_names boolean FALSE
nazwa_instancji ciąg mydb
nazwa_usługi ciąg mydb
SQL>

(Usunąłem niektóre właściwości z powyższego wyjścia, które nie są istotne)

Następnie użyj przycisku, alter system registeraby ponownie zarejestrować się u słuchacza.

Nie pokazało to żadnego efektu, więc zrestartowałem bazę danych i słuchacza, nadal nie mam szczęścia.

Obecna sytuacja przedstawia się następująco:

select name from v$active_services zwroty:

SERVICE_ID | NAZWA | NAZWA SIECI       
----------- + ----------------- + --------------------
1 | SYS $ TŁO |                    
2 | SYS $ USERS |                    
3 | mydb | mydb           
5 | mydbXDB | mydbXDB        
6 | mydb.foo.bar | mydb.foo.bar

Z jakiegoś powodu stara nazwa usługi wciąż istnieje i działa.

Podczas próby zatrzymania korzystania z usługi

SQL> exec dbms_service.stop_service ('mydb.foo.bar');
Procedura PL / SQL została pomyślnie zakończona.

błąd nie jest zgłaszany, ale podczas próby usunięcia usługi Oracle nie pozwala mi:

SQL> exec dbms_service.delete_service ('mydb.foo.bar');
BEGIN dbms_service.delete_service ('mydb.foo.bar'); KONIEC;

*
BŁĄD w wierszu 1:
ORA-44305: Usługa mydb.foo.bar jest uruchomiona
ORA-06512: w „SYS.DBMS_SYS_ERROR”, wiersz 86
ORA-06512: w „SYS.DBMS_SERVICE”, wiersz 454
ORA-06512: w „SYS.DBMS_SERVICE”, wiersz 343
ORA-06512: w linii 1

Potwierdziłem, że nie mam otwartych połączeń korzystających z tej usługi:

select count(*)
FROM v$session
where service_name = 'mydb.foo.bar';

zwrócone 0(zero)

Ponownie odtworzyłem usługę Windows za pomocą oradim, ale bezskutecznie.

W pewnym momencie pobiegłem

alter system set service_names = 'mydb,mydb.foo.bar' scope = both;

czy to może być powód, dla którego mam teraz oba?

Ale po zmianie nazw usług na jedną nazwę, druga powinna odejść, prawda?

Jeśli nie mogę sprawić, aby druga usługa zniknęła, wystarczyłoby, aby instancja zarejestrowała się ze słuchaczem za pomocą krótkiej nazwy usługi, a nie długiej.

Jestem pewien, że brakuje mi czegoś dość oczywistego, ale nie mogę zrozumieć, co to jest.

koń bez imienia
źródło

Odpowiedzi:

5

Jestem pewien, że brakuje mi czegoś dość oczywistego, ale nie mogę zrozumieć, co to jest.

Tak, to było coś bardzo oczywistego ...

Parametr DB_DOMAINnadal zawierał, foo.bardlatego instancja zarejestrowała się za pomocą mydb.foo.bar.

Po wykonaniu

alter system set db_domain='' scope=spfile; 

i odbijanie bazy danych wszystko działa zgodnie z oczekiwaniami.

koń bez imienia
źródło