Der Dienstname für Oracle kann nicht geändert werden

9

Ich versuche, den Dienstnamen einer Oracle 11.2.0.3-Installation auf einem Windows 2003-Server zu ändern.

Während der Installation wurde der Dienstname mit der Standarddomäne definiert, aber wir möchten das entfernen.

Was ich bisher getan hat (und was vor gearbeitet hat) , um die Service - Namen zu ändern , mydb.foo.barum mydbnur:

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

Was scheint funktioniert zu haben:

SQL> Parametername anzeigen

NAME TYPE VALUE
------------------------------------ ----------- --- ---------------------------
db_name string mydb
db_unique_name string mydb
global_names boolean FALSE
Instanzname Zeichenfolge mydb
service_names string mydb
SQL>

(Ich habe einige Eigenschaften aus der obigen Ausgabe entfernt, die nicht relevant sind.)

Verwenden Sie dann, um alter system registersich erneut beim Listener zu registrieren.

Dies zeigte keine Auswirkung, so dass ich die Datenbank und den Listener neu startete, immer noch kein Glück.

Die aktuelle Situation ist wie folgt:

select name from v$active_services kehrt zurück:

SERVICE_ID | NAME | NETZWERKNAME       
----------- + ----------------- + --------------------
1 | SYS $ HINTERGRUND |                    
2 | SYS $ USERS |                    
3 | mydb | mydb           
5 | mydbXDB | mydbXDB        
6 | mydb.foo.bar | mydb.foo.bar

Aus irgendeinem Grund ist der alte Dienstname immer noch vorhanden und wird ausgeführt.

Beim Versuch, den Dienst mit zu beenden

SQL> exec dbms_service.stop_service ('mydb.foo.bar');
PL / SQL-Prozedur erfolgreich abgeschlossen.

Es wird kein Fehler gemeldet, aber beim Versuch, den Dienst zu löschen, lässt Oracle mich nicht zu:

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

* *
FEHLER in Zeile 1:
ORA-44305: Dienst mydb.foo.bar wird ausgeführt
ORA-06512: bei "SYS.DBMS_SYS_ERROR", Zeile 86
ORA-06512: unter "SYS.DBMS_SERVICE", Zeile 454
ORA-06512: unter "SYS.DBMS_SERVICE", Zeile 343
ORA-06512: in Zeile 1

Ich habe überprüft, dass ich mit diesem Dienst keine offenen Verbindungen habe:

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

zurückgegeben 0(Null)

Ich habe auch den Windows-Dienst mit oradim neu erstellt, aber ohne Erfolg.

Irgendwann rannte ich

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

Könnte das der Grund sein, warum ich jetzt beides habe?

Aber nachdem service_names nur in einen einzigen Namen geändert wurde, sollte der zweite weg sein, nicht wahr?

Wenn ich den zweiten Dienst nicht ausschalten kann, reicht es aus, die Instanz beim Listener unter Verwendung des kurzen Dienstnamens und nicht des langen zu registrieren.

Ich bin sicher, ich vermisse etwas ziemlich Offensichtliches, aber ich kann nicht herausfinden, was es ist.

ein Pferd ohne Name
quelle

Antworten:

5

Ich bin sicher, ich vermisse etwas ziemlich Offensichtliches, aber ich kann nicht herausfinden, was es ist.

Ja, es war etwas sehr Offensichtliches ...

Der Parameter DB_DOMAINenthielt noch foo.barund daher hat sich die Instanz mit registriert mydb.foo.bar.

Nach einem

alter system set db_domain='' scope=spfile; 

und das Bouncen der Datenbank funktioniert jetzt wie erwartet.

ein Pferd ohne Name
quelle