Oracle
 sql >> Base de données >  >> RDS >> Oracle

12c DBA_USERS Modifications

Aujourd'hui, j'examinais la possibilité d'interroger l'heure de la dernière connexion d'un utilisateur. Avant 12c, il fallait créer un déclencheur de connexion pour stocker l'heure de connexion dans un tableau ou configurer l'audit et auditer les connexions réussies. Désormais, Oracle 12c inclut, par défaut, un moyen de déterminer la dernière fois que quelqu'un s'est connecté.

SQL> show userUSER is "SYS"SQL> select username,last_login from dba_users2  où last_login n'est pas null;USERNAME                       LAST_LOGIN---------------------- ------- ----------------------------------------SYSTEME                         30- JUL-13 01.57.19.000000000 PM -05:00PEASLAND                                   31-JUL-13 02.15.38.000000000 PM -05:00

Comme vous pouvez le voir, j'ai deux utilisateurs qui se sont connectés à la base de données et la date/heure de leur dernière connexion. Une chose que j'ai remarquée est que même si je suis connecté en tant qu'utilisateur SYS, cette colonne n'est pas remplie pour SYS.

En enquêtant sur la vue DBA_USERS, je vois qu'en plus de la colonne LAST_LOGIN, il y a aussi 3 autres nouvelles colonnes dans la vue Dictionnaire de données, dont une seule que j'avais déjà lue, ORACLE_MAINTAINED. La colonne ORACLE_MAINTAINED indiquera une valeur Y si l'utilisateur a été créé par Oracle et ses différents scripts. Actuellement dans ma base de données de test, je n'ai qu'un seul utilisateur de ce type.

SQL> sélectionnez le nom d'utilisateur à partir de dba_users où oracle_maintained<>'Y';USERNAME------------------------------PEASLAND Une nouvelle colonne que je n'avais pas lue auparavant était l'utilisateur PROXY_ONLY_CONNECT. Cette vue vous permet de voir si un utilisateur autorisera les connexions proxy. Si vous n'êtes pas familier avec les connexions proxy, cela pourrait aider à l'expliquer. Pour plus d'informations, consultez le guide de référence SQL pour ALTER USER et recherchez "proxy_clause". La dernière nouvelle colonne dans DBA_USERS est COMMON. Je n'avais aucune idée de ce à quoi servait cette colonne, donc mon premier arrêt a été le Guide de référence pour DBA_USERS. La description de la colonne est "Indique si un utilisateur donné est commun". Ok… qu'est-ce que ça veut dire ? Qu'est-ce qui définit un utilisateur commun ? Si j'interroge ma base de données de test, j'obtiens le résultat suivant :
SQL> select username,common,oracle_maintained from dba_users;USERNAME                       COM O-------------------- ---------- --- -PEASLAND NON NAUDSYS OUI YGSMUSER OUI YSYSKM YES YSYS                            OUI YSYSTEM                         OUI YOUTLN                          OUI Y
Alors, est-ce qu'un utilisateur "commun" est géré par Oracle ? Si oui, les colonnes COMMON et ORACLE_MAINTAINED ne sont-elles pas redondantes ? Je doute qu'Oracle inclue deux colonnes qui signifient la même chose. Je me suis donc lancé dans une recherche pour trouver la réponse… Dans le Guide de l'administrateur, il y a une petite section intitulée "Utilisateurs communs et utilisateurs locaux". L'utilisateur commun est celui qui est commun à une base de données de conteneur et à toutes les bases de données enfichables existantes et futures dans la nouvelle architecture de base de données mutualisée d'Oracle 12c. Cela a du sens maintenant.