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.bar
en mydb
seulement:
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 register
pour 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.