Oracle
 sql >> Datenbank >  >> RDS >> Oracle

12c DBA_USERS Änderungen

Heute habe ich mir die Möglichkeit angesehen, die letzte Anmeldezeit eines Benutzers abzufragen. Vor 12c musste man einen Anmelde-Trigger erstellen, um die Anmeldezeit in einer Tabelle zu speichern oder die Überwachung einzurichten und erfolgreiche Anmeldungen zu überwachen. Jetzt enthält Oracle 12c standardmäßig eine Möglichkeit, um festzustellen, wann sich jemand zuletzt angemeldet hat.

SQL> show user
USER is "SYS"
SQL> select username,last_login from dba_users
2  where last_login is not null;
USERNAME                       LAST_LOGIN
------------------------------ ----------------------------------------
SYSTEM                         30-JUL-13 01.57.19.000000000 PM -05:00
PEASLAND                       31-JUL-13 02.15.38.000000000 PM -05:00

Wie Sie sehen können, habe ich zwei Benutzer, die sich bei der Datenbank angemeldet haben, und das Datum/die Uhrzeit, zu der sie sich zuletzt angemeldet haben. Eine Sache, die mir aufgefallen ist, ist, dass diese Spalte nicht für SYS.

Bei der Untersuchung der DBA_USERS-Ansicht sehe ich, dass es zusätzlich zur Spalte LAST_LOGIN auch drei weitere neue Spalten in der Data Dictionary-Ansicht gibt, von denen ich zuvor nur eine gelesen hatte, ORACLE_MAINTAINED. Die Spalte ORACLE_MAINTAINED zeigt einen Y-Wert an, wenn der Benutzer von Oracle und seinen verschiedenen Skripten erstellt wurde. Derzeit habe ich in meiner Testdatenbank nur einen solchen Benutzer.

SQL> select username from dba_users where oracle_maintained<>'Y';
USERNAME
------------------------------
PEASLAND
Eine neue Spalte, über die ich zuvor noch nichts gelesen hatte, war der Benutzer PROXY_ONLY_CONNECT. In dieser Ansicht können Sie sehen, ob ein Benutzer Proxy-Verbindungen zulässt. Falls Sie mit Proxy-Verbindungen nicht vertraut sind, hilft dies möglicherweise bei der Erklärung. Weitere Informationen finden Sie im SQL-Referenzhandbuch für ALTER USER und suchen Sie nach „proxy_clause“. Die letzte neue Spalte in DBA_USERS ist COMMON. Ich hatte keine Ahnung, wofür diese Kolumne gut war, also war meine erste Anlaufstelle das Referenzhandbuch für DBA_USERS. Die Beschreibung für die Spalte lautet „Gibt an, ob ein bestimmter Benutzer üblich ist“. Ok… was bedeutet das? Was definiert einen gemeinsamen Benutzer? Wenn ich meine Testdatenbank abfrage, erhalte ich die folgende Ausgabe:
SQL> select username,common,oracle_maintained from dba_users;
USERNAME                       COM O
------------------------------ --- -
PEASLAND                       NO  N
AUDSYS                         YES Y
GSMUSER                        YES Y
SYSKM                          YES Y
XS$NULL                        YES Y
OJVMSYS                        YES Y
ORACLE_OCM                     YES Y
SYSDG                          YES Y
DIP                            YES Y
SYSBACKUP                      YES Y
GSMCATUSER                     YES Y
GSMADMIN_INTERNAL              YES Y
APPQOSSYS                      YES Y
XDB                            YES Y
WMSYS                          YES Y
DBSNMP                         YES Y
ANONYMOUS                      YES Y
SYS                            YES Y
SYSTEM                         YES Y
OUTLN                          YES Y
Ist ein „normaler“ Benutzer also ein Benutzer, der von Oracle verwaltet wird? Wenn ja, sind die Spalten COMMON und ORACLE_MAINTAINED nicht redundant? Ich bezweifle, dass Oracle zwei Spalten enthalten würde, die dasselbe bedeuten. Also machte ich mich auf die Suche, um die Antwort zu finden … Im Administratorhandbuch gibt es einen kleinen Abschnitt mit dem Titel „Allgemeine Benutzer und lokale Benutzer“. Der allgemeine Benutzer ist einer, der einer Containerdatenbank und allen bestehenden und zukünftigen Plug-in-Datenbanken in der neuen Multi-Tenant-Datenbankarchitektur von Oracle 12c gemeinsam ist. Das macht jetzt Sinn.