sql >> Base de Datos >  >> RDS >> Oracle

12c DBA_USERS Cambios

Hoy, estuve analizando la posibilidad de consultar la última hora de inicio de sesión de un usuario. Antes de 12c, había que crear un activador de inicio de sesión para almacenar la hora de inicio de sesión en una tabla o configurar la auditoría y auditar los inicios de sesión exitosos. Ahora, Oracle 12c incluye, de manera predeterminada, una forma de determinar la última vez que alguien inició sesión.

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

Como puede ver, tengo dos usuarios que iniciaron sesión en la base de datos y la fecha/hora en que iniciaron sesión por última vez. Una cosa que noté es que aunque estoy conectado como usuario de SYS, esta columna no está completa para SYS.

Mientras investigo la vista DBA_USERS, veo que además de la columna LAST_LOGIN, también hay otras 3 columnas nuevas en la vista Diccionario de datos, solo una de las cuales había leído anteriormente, ORACLE_MAINTAINED. La columna ORACLE_MAINTAINED indicará un valor Y si el usuario fue creado por Oracle y sus diversos scripts. Actualmente en mi base de datos de prueba, solo tengo uno de esos usuarios.

SQL> select username from dba_users where oracle_maintained<>'Y';
USERNAME
------------------------------
PEASLAND
Una nueva columna sobre la que no había leído anteriormente era el usuario PROXY_ONLY_CONNECT. Esta vista le permite ver si un usuario permitirá conexiones proxy. En caso de que no esté familiarizado con las conexiones de proxy, esto podría ayudar a explicarlo. Para obtener más información, visite la Guía de referencia de SQL para ALTER USER y busque "proxy_clause". La última columna nueva en DBA_USERS es COMÚN. No tenía ni idea de para qué era esta columna, así que mi primera parada fue la Guía de referencia para DBA_USERS. La descripción de la columna es "Indica si un usuario dado es común". Bien... ¿qué significa eso? ¿Qué define a un usuario común? Si consulto mi base de datos de prueba, obtengo el siguiente resultado:
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
Entonces, ¿un usuario "común" es uno que se mantiene en Oracle? Si es así, ¿no son redundantes las columnas COMÚN y ORACLE_MAINTAINED? Dudo que Oracle incluya dos columnas que signifiquen lo mismo. Así que me embarqué en una búsqueda para encontrar la respuesta... En la Guía del administrador, hay una pequeña sección titulada "Usuarios comunes y usuarios locales". El usuario común es uno que es común a una base de datos contenedora y a todas las bases de datos conectables existentes y futuras en la nueva arquitectura de base de datos multiusuario de Oracle 12c. Eso tiene sentido ahora.