Неможливо змінити назву служби для Oracle


9

Я намагаюся змінити назву служби встановлення 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;

Чи може це бути причиною того, що я маю і те й інше?

Але після зміни службових імен лише на одне ім’я, друге повинно піти, чи не так?

Якщо я не можу змусити другу службу піти, досить буде зареєструвати екземпляр у слухача, використовуючи коротке ім'я служби, а не довге.

Я впевнений, що я пропускаю щось досить очевидне, але не можу зрозуміти, що це таке.

Відповіді:


5

Я впевнений, що я пропускаю щось досить очевидне, але не можу зрозуміти, що це таке.

Так, це було щось дуже очевидне ...

Параметр DB_DOMAINвсе ще міститься foo.barі тому екземпляр зареєстрував себе за допомогою mydb.foo.bar.

Після виконання а

alter system set db_domain='' scope=spfile; 

і підстрибуючи в базі даних, все працює так, як очікувалося зараз.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.