Я намагаюся змінити назву служби встановлення 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 булева помилка string_name рядок mydb service_names рядок mydb SQL>
(З наведеного вище виводу я видалив деякі властивості, які не стосуються)
Потім використовуйте alter system register
для перереєстрації у слухача.
Це не показало ефекту, тому я перезапустив базу даних і слухача, все ще не пощастило.
Поточна ситуація така:
select name from v$active_services
повертає:
SERVICE_ID | ІМ’Я | NETWORK_NAME ----------- + ----------------- + -------------------- 1 | SYS $ НАЗАД | 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;
Чи може це бути причиною того, що я маю і те й інше?
Але після зміни службових імен лише на одне ім’я, друге повинно піти, чи не так?
Якщо я не можу змусити другу службу піти, досить буде зареєструвати екземпляр у слухача, використовуючи коротке ім'я служби, а не довге.
Я впевнений, що я пропускаю щось досить очевидне, але не можу зрозуміти, що це таке.