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 mydb
tylko:
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 register
aby 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.
źródło