Impossible de modifier le nom du service pour Oracle

9

J'essaie de changer le nom de service d'une installation Oracle 11.2.0.3 sur un serveur Windows 2003.

Lors de l'installation, le nom du service a été défini avec le domaine par défaut, mais nous aimerions nous en débarrasser.

Ce que j'ai fait jusqu'à présent (et ce qui a fonctionné auparavant) pour changer le nom du service mydb.foo.baren mydbseulement:

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

Ce qui semble avoir fonctionné:

SQL> afficher le nom du paramètre

VALEUR DU TYPE DE NOM
------------------------------------ ----------- --- ---------------------------
db_name string mydb
db_unique_name string mydb
global_names boolean FALSE
nom_instance chaîne mydb
service_names string mydb
SQL>

(J'ai supprimé certaines propriétés de la sortie ci-dessus qui ne sont pas pertinentes)

Utilisez ensuite alter system registerpour vous réinscrire auprès de l'auditeur.

Cela n'a montré aucun effet, j'ai donc redémarré la base de données et l'auditeur, toujours pas de chance.

La situation actuelle est la suivante:

select name from v$active_services Retour:

SERVICE_ID | NOM | NOM DE RÉSEAU       
----------- + ----------------- + --------------------
1 | CONTEXTE SYS $ |                    
2 | UTILISATEURS SYS $ |                    
3 | mydb | mydb           
5 | mydbXDB | mydbXDB        
6 | mydb.foo.bar | mydb.foo.bar

Donc, pour une raison quelconque, l'ancien nom du service est toujours là et fonctionne.

Lorsque vous essayez d'arrêter le service en utilisant

SQL> exec dbms_service.stop_service ('mydb.foo.bar');
Procédure PL / SQL terminée avec succès.

aucune erreur n'est signalée, mais en essayant de supprimer le service, Oracle ne me laisse pas:

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

*
ERREUR à la ligne 1:
ORA-44305: le service mydb.foo.bar est en cours d'exécution
ORA-06512: sur "SYS.DBMS_SYS_ERROR", ligne 86
ORA-06512: à "SYS.DBMS_SERVICE", ligne 454
ORA-06512: à "SYS.DBMS_SERVICE", ligne 343
ORA-06512: à la ligne 1

J'ai vérifié que je n'ai aucune connexion ouverte en utilisant ce service:

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

retourné 0(zéro)

J'ai également recréé le service Windows en utilisant oradim, mais en vain.

À un moment donné, j'ai couru

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

cela pourrait-il être la raison pour laquelle j'ai les deux maintenant?

Mais après avoir changé les noms de service en un seul nom, le second aurait dû disparaître, n'est-ce pas?

Si je ne peux pas faire disparaître le deuxième service, il suffirait de faire enregistrer l'instance auprès de l'auditeur en utilisant le nom de service court, plutôt que le long.

Je suis sûr que je manque quelque chose d'assez évident, mais je ne peux pas comprendre ce que c'est.

un cheval sans nom
la source

Réponses:

5

Je suis sûr que je manque quelque chose d'assez évident, mais je ne peux pas comprendre ce que c'est.

Oui, c'était quelque chose de très évident ...

Le paramètre DB_DOMAINcontenait toujours foo.baret, par conséquent, l'instance s'est enregistrée à l'aide de mydb.foo.bar.

Après avoir fait un

alter system set db_domain='' scope=spfile; 

et rebondir la base de données tout fonctionne comme prévu maintenant.

un cheval sans nom
la source