Warum brauche ich zwei davon? Wenn ich das eine oder das andere benutzen muss?
@DAC
Kurz gesagt: SID = der eindeutige Name Ihrer DB, ServiceName = der verwendete Alias beim Verbinden
Stimmt nicht ganz... SID = der eindeutige Name der INSTANZ (z.B. der Oracle-Prozess, der auf dem Rechner läuft). Oracle betrachtet die "Datenbank" als die Dateien.
Service Name = Alias für eine INSTANZ (oder mehrere Instanzen). Der Hauptzweck besteht darin, dass bei einem Cluster der Client sagen kann: "Verbinde mich mit SALES.acme.com", und der DBA kann spontan die Anzahl der Instanzen ändern, die für SALES.acme.com-Anfragen zur Verfügung stehen, oder sogar SALES.acme.com in eine völlig andere Datenbank verschieben, ohne dass der Client irgendwelche Einstellungen ändern muss.
Siehe dazu: http://www.sap-img.com/oracle-database/finding-oracle-sid-of-a-database.htm
Was ist der Unterschied zwischen Oracle SIDs und Oracle SERVICE NAMES. Ein Konfigurationswerkzeug sucht nach SERVICE NAME und dann sucht das nächste nach SIDs! Was's los?!
Die Oracle SID ist der eindeutige Name, der eindeutig identifiziert Ihre Instanz/Datenbank identifiziert, während Service Name ist der TNS-Alias, den Sie vergeben wenn Sie eine Fernverbindung zu Ihrer Datenbank verbinden, und dieser Servicename wird in der Datei Tnsnames.ora auf Ihren Clients aufgezeichnet und kann mit der SID und Sie können ihm auch jeden anderen Namen geben, den Sie wünschen.
SERVICE_NAME ist die neue Funktion von oracle 8i aufwärts, in dem die Datenbank sich beim Listener registrieren kann. Wenn Datenbank beim Listener registriert ist auf diese Weise registriert ist, können Sie den SERVICE_NAME Parameter in tnsnames.ora andernfalls - verwenden Sie SID in tnsnames.ora.
Auch wenn Sie OPS (RAC) haben, werden Sie haben Sie unterschiedliche SERVICE_NAME für jede Instanz.
SERVICE_NAMES gibt einen oder mehrere Namen für den Datenbankdienst an mit dem sich diese Instanz verbindet. Sie können mehrere Dienstnamen angeben, um angeben, um zwischen verschiedenen Verwendungen der gleichen Datenbank zu unterscheiden. Für Beispiel:
SERVICE_NAMES = sales.acme.com, widgetsales.acme.com
Sie können Servicenamen auch verwenden, um einen einzelnen Dienst zu identifizieren, der von zwei verschiedenen Datenbanken verfügbar ist durch den Einsatz von Replikation.
In einer Oracle Parallel Server Umgebung müssen Sie diesen Parameter für jede Instanz setzen.
Kurz gesagt: SID = der eindeutige Name Ihrer DB-Instanz, ServiceName = der bei der Verbindung verwendete Alias
Gemäß dem Oracle-Glossar:
SID ist ein eindeutiger Name für eine Oracle-Datenbankinstanz. ---> Um zwischen zwischen Oracle-Datenbanken zu wechseln, müssen Benutzer die gewünschte SID angeben <---. Die SID ist in den CONNECT DATA-Teilen der Verbindungsdeskriptoren enthalten in einer TNSNAMES.ORA-Datei, und in der Definition des Netzwerk-Listeners in der Datei LISTENER.ORA. Auch bekannt als System ID. Oracle-Dienstname kann etwas Beschreibendes sein wie "MyOracleServiceORCL". Unter Windows, " Sie können Ihren Dienstnamen als Dienst unter Windows Services laufen lassen.
Sie sollten die SID in TNSNAMES.ORA als besseren Ansatz verwenden.