In Oracle gibt es verschiedene Möglichkeiten, Benutzerrechte zu finden, abhängig von der Detailstufe, die Sie benötigen, und ob Sie bestimmte Benutzer oder systemweit betrachten. Hier sind einige gemeinsame Methoden:
1. Verwenden der `dba_sys_privs` und` dba_tab_privs` Ansichten:
Diese Datenwörterbuchansichten bieten umfassende Informationen zu den Benutzern gewährten System- und Objektberechtigungen. `Dba_sys_privs` zeigt Systemberechtigungen (z. B.` create table`, `create Session`), während` dba_tab_privs` Objektberechtigungen (z. B. `select`,` Insert`, `update 'auf bestimmten Tabellen) zeigt.
* für Systemrechte:
`` `SQL
Wählen Sie * aus DBA_SYS_PRIVs, wobei Grantee ='Benutzername';
`` `
Ersetzen Sie "Benutzername" durch den tatsächlichen Benutzernamen.
* für Objektberechtigte:
`` `SQL
Wählen Sie * aus dba_tab_privs wobei stipendise ='userername';
`` `
Ersetzen Sie "Benutzername" durch den tatsächlichen Benutzernamen. Dies zeigt alle Privilegien auf allen Tischen. Sie können diese Abfrage verfeinern, um bestimmte Tabellen zu betrachten:
`` `SQL
Wählen Sie * aus dba_tab_privs wobei stipendise ='userername' und table_name ='table_name';
`` `
Ersetzen Sie `table_name` durch den Namen der Tabelle.
2. Verwenden Sie die `All_Sys_privs` und` All_tab_privs` Ansichten:
Diese Ansichten enthalten Informationen über die Berechtigungen, die ein Benutzer * direkt oder indirekt über Rollen hat. Dies ist nützlich für einen Benutzer, der seine eigenen Berechtigungen überprüft. Wenn Sie sich als Benutzer verbinden, können Sie diese Ansichten verwenden:
* für Systemrechte:
`` `SQL
Wählen Sie * aus All_Sys_Privs;
`` `
* für Objektberechtigte:
`` `SQL
Wählen Sie * aus All_tab_privs;
`` `
Sie können auch nach Benutzernamen wie die `dba_` -Ansichten filtern.
3. Verwenden der `user_sys_privs` und` user_tab_privs` Ansichten:
Diese Ansichten zeigen nur die Berechtigungen, die dem verbundenen Benutzer direkt gewährt wurden. Sie zeigen keine Privilegien, die durch Rollen gewährt werden. Nützlich für einen Benutzer, der nur seine eigenen direkten Privilegien sieht.
* für Systemrechte:
`` `SQL
Wählen Sie * aus user_sys_privs;
`` `
* für Objektberechtigte:
`` `SQL
Wählen Sie * aus user_tab_privs;
`` `
4. Verwenden der Spalte "Rollen" in den vorherigen Ansichten:
Die Spalte "Rollen" in `dba_sys_privs`,` dba_tab_privs`, `all_sys_privs`,` All_tab_privs` zeigt an, ob das Privileg direkt oder durch eine Rolle gewährt wird. Wenn dies durch eine Rolle gewährt wird, müssen Sie die für diese Rolle gewährten Privilegien untersuchen. Sie finden Informationen zu Rollen mit den Ansichten "Dba_Roles", `All_roles` oder` user_roles`, abhängig von Ihrer Zugriffsstufe.
5. Verwenden von `show user``:
Dieser Befehl (in SQL*Plus oder SQL Developer) zeigt den aktuell verbundenen Benutzer an. Dies zeigt keine direkten Privilegien, aber es ist ein Ausgangspunkt, um dann die obigen Ansichten zu verwenden.
Wichtige Überlegungen:
* Datenbankrollen: Benutzer erhalten häufig indirekt über Rollen. Sie müssen die Rollen untersuchen, zu der ein Benutzer gehört und die Privilegien dieser Rollen haben. Dies erfordert, dass die Ansichten von `dba_roles`,` All_roles` oder `user_roles` angezeigt werden.
* privilegiert durch Rollen: Rollen können anderen Rollen Privilegien gewähren. Dies kann komplexe Privilegienstrukturen erzeugen.
* Zugriffsebene: Sie benötigen die entsprechenden Berechtigungen (z. B. "Wählen Sie ein Wörterbuch auswählen"), um die Datenwörterbuchansichten abzufragen. `Dba_` Ansichten erfordern im Allgemeinen die Rolle" dba ".
Denken Sie daran, `username` und` table_name` durch den tatsächlichen Benutzernamen und den Tabellennamen zu ersetzen, an dem Sie interessiert sind. Führen Sie diese Abfragen immer mit Vorsicht aus, insbesondere solche, die "dba_` -Ansichten verwenden, da sie Zugriff auf vertrauliche Informationen bieten.