sql >> Databasteknik >  >> RDS >> Oracle

12c DBA_USERS Ändringar

Idag tittade jag på möjligheten att fråga en användares senaste inloggningstid. Före 12c var man tvungen att skapa en inloggningstrigger för att lagra inloggningstiden i en tabell eller ställa in revision och granska framgångsrika inloggningar. Nu innehåller Oracle 12c, som standard, ett sätt att avgöra när någon senast loggade in.

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

Som ni ser har jag två användare som har loggat in i databasen och vilket datum/tid de loggade in senast. En sak jag märkte är att även om jag är ansluten som SYS-användare så är denna kolumn inte ifylld för SYS.

När jag undersöker vyn DBA_USERS ser jag att förutom kolumnen LAST_LOGIN, finns det även 3 andra nya kolumner i vyn Data Dictionary, av vilka jag bara hade läst en tidigare, ORACLE_MAINTAINED. Kolumnen ORACLE_MAINTAINED kommer att indikera ett Y-värde om användaren skapades av Oracle och dess olika skript. För närvarande i min testdatabas har jag bara en sådan användare.

SQL> select username from dba_users where oracle_maintained<>'Y';
USERNAME
------------------------------
PEASLAND
En ny kolumn som jag inte tidigare läst om var PROXY_ONLY_CONNECT-användaren. Den här vyn låter dig se om en användare tillåter proxyanslutningar. Om du inte är bekant med proxyanslutningar kan detta hjälpa dig att förklara det. För mer information, besök SQL Reference Guide for ALTER USER och sök efter "proxy_clause". Den sista nya kolumnen i DBA_USERS är COMMON. Jag hade ingen aning om vad den här kolumnen var till för så mitt första stopp var referensguiden för DBA_USERS. Beskrivningen för kolumnen är "Anger om en given användare är vanlig". Ok….vad betyder det? Vad definierar en vanlig användare? Om jag frågar min testdatabas får jag följande utdata:
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
Så är en "vanlig" användare en som underhålls av Oracle? Om så är fallet, är inte kolumnerna COMMON och ORACLE_MAINTAINED överflödiga? Jag tvivlar på att Oracle skulle inkludera två kolumner som betyder samma sak. Så jag inledde en sökning för att hitta svaret ... I administratörsguiden finns det ett litet avsnitt med titeln "Vanliga användare och lokala användare". Den gemensamma användaren är en som är gemensam för en containerdatabas och alla befintliga och framtida pluggbara databaser i Oracle 12cs nya multi-tenant databasarkitektur. Det är vettigt nu.
  1. Uppdatera fråga if-sats för Oracle

  2. @@ERROR och/eller TRY - CATCH

  3. Hur man byter namn på databas i SQL Server - SQL Server / TSQL självstudie del 26

  4. Ordna om TreeView-noder genom att dra och släppa