Kann mir jemand erklären, worin der Unterschied zwischen SID, DB-Name, DB-Domäne, globalem Datenbanknamen, Servicename, Servicealias und Instanzname in Oracle besteht?
Danke Michael
Kann mir jemand erklären, worin der Unterschied zwischen SID, DB-Name, DB-Domäne, globalem Datenbanknamen, Servicename, Servicealias und Instanzname in Oracle besteht?
Danke Michael
Antworten:
SID = identifiziert die Datenbankinstanz (Datenbankname + Instanznummer). Wenn Ihr Datenbankname also somedb und Ihre Instanznummer 3 ist, lautet Ihre SID somedb3.
DB Name = Name der Datenbank (Datenbank kann von mehreren Instanzen gemeinsam genutzt werden)
DB Domain = In der Regel identisch mit Ihrer Unternehmensdomain (somecompany.com)
Globaler Datenbankname = Datenbankname + Datenbankdomäne (somedb.somecompany.com)
Dienstname = Ein "Konnektor" für eine oder mehrere Instanzen. Es ist oft nützlich, in einer RAC-Umgebung zusätzliche Dienstnamen zu erstellen, da der Dienst so geändert werden kann, dass bestimmte SIDs als primäre oder sekundäre Verbindungen verwendet werden oder bestimmte SIDs überhaupt nicht verwendet werden.
Dienst-Alias = Ein Alias für den Dienstnamen (genau wie ein CNAME usw.). Nehmen wir an, Sie machen Ihren Servicenamen für die dba zu etwas Bedeutendem, aber vielleicht ist es ein bisschen esoterisch. Erstellen Sie einen Service-Alias und benennen Sie ihn mit einem für den Benutzer aussagekräftigen Namen.
Instanzname = wie SID
default service name
= global db name
?
Die Art und Weise, wie Sie SID beschreiben, ist nur das DEFAULT-Verhalten in einer RAC-Konfiguration. Die SID (== Instanzname) ist genau das: Der Name Ihrer Instanz.
Ich sehe es immer so: Eine Instanz ist eine Instanz der RDBMS-Software. Eine Instanz MOUNTS eine Steuerdatei, (alter database mount) In diese Datei wird der Speicherort der Datendateien geschrieben. die Sammlung von Datendateien (okay, und die Kontrolldatei (en)) == die Datenbank.
Eine Datenbank hat einen Namen, den Datenbanknamen und (optional) eine Domäne (Datenbankdomäne) -> zusammen Datenbankname. Stellen Sie sich nun vor, Sie replizieren (DataGuard) Ihre Datenbank. Sie möchten den DB_namen gleich lassen, oder? (Ich meine: datenmäßig ist es die gleiche Datenbank) Aber wie können Sie dann die beiden "Versionen" Ihrer Datenbank identifizieren? Gib 'DB_UNIQUE_NAME' ein ... Ja, es wird immer verwirrender ...
Meine persönliche Praxis besteht darin, die INSTANZ wie den eindeutigen Namen in einem DataGuard-Setup zu benennen und die RAC-Namen (Datenbankname + Instanznummer) in einem RAC-Setup beizubehalten. Dann sind die db_unique_names, die ich zusammenstelle, im Allgemeinen wie db_name + 1-Buchstaben-Suffix (MYDBa MYDBb usw.)
Prost, Paul
SID ist Instanz. Vermeiden Sie besser den Begriff 'Datenbankinstanz', nur Instanz.
"SID = identifiziert die Datenbankinstanz (Datenbankname + Instanznummer)" ist falsch. "Eine Instanz ist eine Instanz der RDBMS-Software" ist falsch. Ein deinstalliertes oder installiertes DBMS ist nur DBMS.
"DB-Domain = In der Regel identisch mit Ihrer Unternehmensdomain" sollte vermieden werden. Bei der Verwendung der Domain sind Probleme aufgetreten, und die Probleme verschwinden, wenn die Domain nicht verwendet wird.
"Globaler Datenbankname = Datenbankname + Datenbankdomäne" ist ebenfalls falsch. Der globale Datenbankname ist der Dienstname. So einfach ist das.
"SID = identifiziert die Datenbankinstanz (Datenbankname + Instanznummer). Wenn Ihr Datenbankname also somedb und Ihre Instanznummer 3 ist, dann ist Ihre SID somedb3." ist falsch. Es gibt keine solche Verkettung von Identität oder Name.