Я пытаюсь изменить имя службы установки Oracle 11.2.0.3 на сервере Windows 2003.
Во время установки имя службы было определено с доменом по умолчанию, но мы хотели бы избавиться от этого.
То , что я сделал до сих пор (и то , что работало раньше) , чтобы изменить имя службы , 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 имя_экземпляра строка mydb service_names string mydb SQL>
(Я удалил некоторые свойства из вышеприведенного вывода, которые не имеют отношения)
Затем используйте alter system register
для повторной регистрации слушателя.
Это не показало никакого эффекта, поэтому я перезапустил базу данных и слушателя, но все же не повезло.
Текущая ситуация выглядит следующим образом:
select name from v$active_services
возвращает:
SERVICE_ID | ИМЯ | ИМЯ СЕТИ ----------- + ----------------- + -------------------- 1 | SYS $ BACKGROUND | 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 успешно завершена.
об ошибке не сообщается, но при попытке удалить сервис Oracle не разрешит мне:
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
(ноль)
Я также заново воссоздал службу Windows, используя oradim, но безрезультатно.
Однажды я побежал
alter system set service_names = 'mydb,mydb.foo.bar' scope = both;
Может ли это быть причиной, почему у меня есть оба сейчас?
Но после смены service_names только на одно имя, второе должно было исчезнуть, не так ли?
Если я не смогу убрать вторую службу, достаточно было бы зарегистрировать экземпляр в слушателе, используя короткое имя службы, а не длинное.
Я уверен, что упускаю что-то довольно очевидное, но я не могу понять, что это такое.