Ich bin ein DBA auf Oracle und SQL Server.
Die Verwirrung ist auf eine Nichtübereinstimmung der Semantik und eine zusätzliche Ebene in der SQL Server-Hierarchie zurückzuführen, aber es gibt noch mehr!
Beachten Sie, dass wir in beiden Fällen nur über Einzelinstanzdatenbanken sprechen (Wortspiel beabsichtigt).
Instanzen
In Oracle wird einer Instanz eine Speichermenge zugewiesen (SGA / PGA) und Prozesse erzeugt (smon, pmon dw0X usw.). Es gibt Systemansichten zur Überwachung aller Elemente, die erstellt und verwendet werden (V $ - und dba_-Ansichten).
Dies ist die Struktur, mit der wir im Orakel vertraut sind.
Und Sie haben es bereits erwähnt, in der Datenbank befinden sich die physischen Dateien. Normalerweise macht der Wechsel zu RAC den Unterschied deutlich.
In SQL Server funktioniert die Instanz auf die gleiche Weise: Es wird eine Menge Speicher zugewiesen, und es gibt Systemansichten (sys.), Um all diese Dinge zu überwachen.
Die Instanz verfügt über 4 Systemdatenbanken:
- System, in dem sich die Systemansichten befinden.
- msdb-Datenbank, die auch systembezogene Informationen enthält. In der Regel finden Sie dort Ihre Backups-bezogenen Daten. Zumindest zum Löschen alter Sicherungsdatensätze ist ein wenig Wartung erforderlich.
- model, die treffend benannte Datenbank, die als Modell für jede neue Datenbank verwendet wird, die Sie erstellen. Es ist eine gute Idee, die Einstellungen für Datendateien (automatische Erweiterung, Anfangsgröße, Sicherungsmodus) zu ändern, damit alle neuen Datenbanken davon profitieren.
- Tempdb entwickelt unten.
Die Systemdatenbank enthält Metadateninformationen für jede andere Datenbank in SQL Server.
Temp Raum
In Oracle:
Temporärer Tabellenbereich (temporären Tabellenbereich erstellen). In Oracle ist der temporäre Tablespace eine Überlaufzone für Vorgänge, die nicht in den PGA passen (Prozessspeicher, standardmäßig 200 MB (bis zu 11 g), Ihr Hash-Join beispielsweise, wenn mehr als 200 MB im temporären Tablespace verschüttet werden. Dies ist im Allgemeinen eine Ursache der langsam laufenden Abfrage).
In SQL Server befindet sich im Abschnitt "Systemdatenbanken" eine Tempdb-Datenbank, die sehr aktiv verwendet wird, viel mehr als in Oracle. Legen Sie es auf sehr schnelle Festplatten (SSD oder Glasfaser kommen in den Sinn)
Damit kommt der 2. große Unterschied:
Objekte
In SQL Server:
Die Objekte (Tabelle, Ansichten) sind nicht wie in Oracle an einen Benutzer gebunden, sondern an eine "Datenbank". Die "Datenbank" enthält (nicht eigene) die Objekte. Zum Zeitpunkt der Erstellung der Datenbank wird eine Datendatei zum Speichern dieser Objekte erwähnt.
Im Orakel:
Ein Benutzer erstellt Objekte, die in einem gleichnamigen Schema landen. Die sorgfältige Benennung der Benutzer wird wichtig.
Und hier kommt der 3. große Unterschied:
Sicherheit
Im Orakel:
Benutzer werden erstellt und erhalten zumindest das Recht, Sitzungen zu erstellen, damit sie auf Objekte zugreifen können, die ihnen gestattet wurden. Oder sie haben das Recht, Objekte in ihrem eigenen Schema (Ressourcenrolle) zu erstellen, die dann ein Schema in diesem Namen erstellen.
Sie können einen Tabellenbereich erstellen und ihn als Standard für jeden Benutzer festlegen, der Objekte erstellen kann. Wenn dies nicht getan wird, wird ein Standardtabellenbereich verwendet, im Allgemeinen "USER_DATA".
In SQL Server:
Da die Objekte keinem bestimmten Benutzer in einem Schema gehören, müssen zuerst Benutzer erstellt und dann Berechtigungen zugewiesen werden. In der Regel erhält jeder, der der Hauptbenutzer für die Objekterstellung ist, die Rolle "Eigentümer" für eine bestimmte Datenbank.
Dieser Benutzer in SQL Server entspricht dem Oracle eines Schemabesitzers, es kann jedoch mehr als einen Eigentümer geben.
Sicherheit ist der Punkt, an dem SQL Server über Oracle steht: Die Sicherheit von SQL Server kann an Active Directory gebunden werden, das die Desktopbenutzer verwaltet. Diese Desktop-Benutzer können an eine Benutzergruppe gebunden sein, die "schreibgeschützt" sagt. Es ist möglich, diese Active Directory-Gruppe zu SQL Server hinzuzufügen und ihr einen schreibgeschützten Zugriff auf Ihre Datenbank zu gewähren.
Wenn ein Benutzer Ihr Unternehmen verlässt, löscht der Active Directory-Administrator diesen Benutzer und der Zugriff auf die Datenbank geht ebenfalls verloren.
Oracle kann LDAP verwenden, aber seien wir ehrlich, es ist nicht sehr oft gut an die Windows-Desktop-Benutzer gebunden.
Der 4. große Unterschied.
Semantik
SQL Server verfügt über eine zusätzliche Ebene. In einer SQL Server-Datenbank können Objekte in Schemas organisiert sein. Schemata können auch Eigentümer haben. Es führt auch mehr Feinkornsicherheit ein, aber während es verwendet wird, ist es nicht üblich. Ich würde sagen, es ist auch empfehlenswert, Ihre Objekte zu Beginn der Entwicklungsphase nach Schema zu gruppieren, um später bei Bedarf von zusätzlichen Sicherheitsfunktionen zu profitieren.
Protokolle / Archivierte Protokolle
Schließlich funktionieren archivierte Protokolle in Oracle und SQL Server unterschiedlich. In SQL Server wird für jede Datenbank eine Protokolldatei erstellt, während in Oracle der Archivprotokollmodus auf Instanzebene aktiviert ist.
Hier verschwimmt die Linie. Für einige Aspekte sind die SQL Server-Datenbanken tatsächlich Datenbanken. In anderen Fällen ähneln sie eher Schemata.
Die Archivierung in SQL Server wird mit der Option Sicherungsmodus auf Voll gesetzt. Anschließend werden sie durch Ausführen einer Protokollsicherung archiviert. Für die Protokollsicherung ist eine vollständige Sicherung erforderlich, bevor sie funktioniert.
In Oracle werden archivierte Protokolle automatisch archiviert und anschließend an einem Remotestandort gesichert.
Zusammenfassung
Orakel:
Instance->User1->Schema1(named User1)->Tablespace1
->Tablespace2
->User2->Schema2(named User2)->Tablespace3
->User3->Granted "read only"->schema2.table1
SQL Server:
Instance->Database1->Schema1
->Database2->Schema2
->User1
->User2
->User1->Granted "owner"->Database1
->User2->Granted "read only"->Database2->Schema2
Dies sind die Dinge, die mir einfallen, wenn ich beide vergleichen kann. Ich würde gerne mehr von anderen hören und diese Antwort ergänzen / korrigieren.
Ich habe auch keine besondere Vorliebe dafür. Ich denke, beide machen einen tollen Job und ich arbeite sehr gerne mit beiden.