Bei der Arbeit mit Oracle-Datenbanken habe ich oft gelesen, dass man mit SYS keine Datenbanken manipulieren darf (Tabellen, Constraints, Sequenzen, Synonyme usw.). Warum wird es nicht empfohlen? Einige meiner Kollegen argumentieren, dass solange Sie voll qualifizierte Deskriptoren verwenden, es kein Problem bei der Verwendung von SYS geben sollte. Ist das wahr? Welche Probleme könnten in welchen Szenarien durch Manipulation einer Datenbank als SYS verursacht werden?Warum wird "SYS" nicht empfohlen, wenn eine Oracle-Datenbank manipuliert wird?
Antwort
Welche Probleme können in welchen Szenarien verursacht werden, indem eine Datenbank als SYS manipuliert wird? Beide
, SYS
und SYSTEM
sind default
Benutzer, mit der Erstellung der Datenbank angelegt. Obwohl sie viel Power haben - wie sie die DBA role
gewährt werden - sind sie immer noch normale Benutzer. Da SYS
das Datenwörterbuch besitzt, gilt er als etwas spezieller als SYSTEM
.
Aber SYS
hat das SYSDBA-Privileg, das SYSTEM nicht tut. Dies macht es möglich, dass SYS
ein sehr sehr mächtiger Benutzer wird. Der Unterschied wird klar, wenn Sie versuchen, shutdown
die Datenbank als gewöhnliche SYS
: Sie erhalten insufficient privileges
als Ergebnis. Wenn es jedoch als SYSDBA verbunden ist, ist es möglich.
Hinweis, SYSDBA
ist keine Rolle, es ist ein privilege
.
SYS ist auch speziell in diesem ist es nicht möglich, einen Trigger im Systemschema zu erstellen. Außerdem wird ein Anmeldetrigger nicht ausgeführt, wenn sys eine Verbindung zur Datenbank herstellt.
SYS
SYS
ist der Eigentümer der Datenbank und der Besitzer des Datenwörterbuch.
Erstellen Sie niemals Objekte im SYS-Schema.
Die zu SYS gehörenden Objekte können nicht exportiert werden.
SYSTEM
SYSTEM
ist eine privilegierte Verwaltung Benutzer und besitzt typischerweise bereitgestellt Oracle anderen Tabellen als das Wörterbuch. Erstellen Sie keine eigenen Objekte unter SYSTEM.
Da SYS die Datenbank besitzt.
Es kann alles tun. Wenn Ihre Kollegen vergessen, dem Zielobjekt das Zielschema voranzulegen, können sie das SYS-Schema beschädigen und/oder die Datenbank beschädigen.
Ich wäre besorgt, wenn zu viele Leute das SYS-Passwort kannten. Weil es Auditing-Probleme verursacht. Wenn etwas schief geht und es wird, ist es schwieriger zu wissen, wer dafür verantwortlich ist, es sei denn, sie besitzen etwas. Keine Kultur zu beschuldigen ist eine gute Kultur, aber die Menschen sind vorsichtiger, wenn sie wissen, dass sie verantwortlich sind.
Dies ist nicht nur eine Sicherheitsfrage. Es ist nicht nur zufällige Korruption, über die Sie sich Sorgen machen müssen.Ein schlechter Akteur mit dem SYS-Passwort kann die Datenbank sabotieren, Code stehlen (IPR) und natürlich vertrauliche Daten entziehen.
Vielleicht reden Sie nur über Entwicklung und Ihre Organisation macht Dinge richtig in der Produktion. Ich hoffe es.
Die Verwendung von SYS ist wie eine Abkürzung über die Bahngleise. Wahrscheinlich geht es Ihnen gut, aber warum sollten Sie das Risiko eingehen?
- 1. Warum HibernateTemplate nicht empfohlen wird?
- 2. Warum wird gunicorn_django nicht mehr empfohlen?
- 3. Warum "$(). Ready (handler)" wird nicht empfohlen?
- 4. Warum wird die Fehlerbehandlung nicht empfohlen?
- 5. Warum wird empfohlen, .innerHTML zu vermeiden?
- 6. Warum wird empfohlen, setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE) zu verwenden?
- 7. Warum wird dieser SVG-Fragment-Bezeichner in CSS nicht gerendert, wenn onclick manipuliert wird?
- 8. Warum wird eine uniforme Initialisierung (Initialisierung mit Klammern) empfohlen?
- 9. EGit: warum "Lokale Verzweigung als Upstream wird nicht empfohlen"?
- 10. Warum wird empfohlen, das RPM Packager-Tag NICHT zu verwenden?
- 11. Warum wird "Export default" nicht in Angular empfohlen?
- 12. Wird moment.js $ rootScope empfohlen?
- 13. Warum wird ein Eclipse-Projektordner nicht als Git-Repository empfohlen?
- 14. Warum wird empfohlen, Fragmente nicht mit der Benutzeroberfläche zu behalten?
- 15. Warum wird "Hibernate.connection.autocommit = true" in Hibernate nicht empfohlen?
- 16. Warum wird nicht empfohlen, Vscode als root auszuführen?
- 17. Warum wird dynamische Echtzeit nicht als Sternchen empfohlen?
- 18. Warum wird das Löschen einer Verzweigung in CVS nicht empfohlen?
- 19. Warum wird die Verwendung der Direktive in C++ nicht empfohlen?
- 20. MessageBox wird nicht in MVVM-Anwendungen empfohlen?
- 21. Welcher PyPy Speicherprofiler wird empfohlen?
- 22. Warum wird empfohlen, ein dynamisches Startdatum in Airflow zu verwenden?
- 23. Warum wird ein führendes Leerzeichen in einer scanf-Formatzeichenfolge empfohlen?
- 24. Warum wird "dringend empfohlen", den Helfer env() nicht zu verwenden, wenn Konfigurationsdateien zwischengespeichert werden?
- 25. Wenn SQLite unter welchen Bedingungen verwendet wird, wird empfohlen, eine verzögerte Transaktion zu verwenden?
- 26. Welcher Ansatz wird empfohlen: aggregateRoot.Items.Add (...) oder aggregateRoot.AddItem (...)
- 27. Warum wird mit fstat nicht
- 28. Was Importeinstellungen in Datenbank-Projekt empfohlen wird
- 29. Warum wird nicht empfohlen, eine React-Komponente von kontrolliert auf unkontrolliert umzuschalten?
- 30. Wird AssertionError aktiv in Java empfohlen?
Fragen Sie Ihre Kollegen, ob sie auf ihren Computern als "root" arbeiten. Als 'SYS' zu arbeiten, ist dasselbe wie 'root' - Sie tun das nur für Wartungsarbeiten, aber nicht um eine E-Mail oder ein Dokument zu schreiben. –