Hoje, eu estava analisando a capacidade de consultar o último horário de login de um usuário. Antes do 12c, era preciso criar um gatilho de logon para armazenar o horário de logon em uma tabela ou configurar auditoria e auditoria de logons bem-sucedidos. Agora, o Oracle 12c inclui, por padrão, uma maneira de determinar a última vez que alguém fez login.
SQL> mostra userUSER é "SYS"SQL> selecione o nome de usuário,last_login de dba_users2 onde last_login não é nulo;USERNAME LAST_LOGIN ----------------------- ------- --------------------------------------------------- SISTEMA 30- JUL-13 01.57.19.000000000 PM -05:00PEASLAND 31-JUL-13 02.15.38.000000000 PM -05:00
Como você pode ver, tenho dois usuários que efetuaram login no banco de dados e a data/hora em que efetuaram login pela última vez. Uma coisa que notei é que, embora eu esteja conectado como usuário SYS, esta coluna não é preenchida para SYS.
Ao investigar a visão DBA_USERS, vejo que além da coluna LAST_LOGIN, há também outras 3 novas colunas para a visão Dicionário de Dados, apenas uma das quais eu tinha lido anteriormente, ORACLE_MAINTAINED. A coluna ORACLE_MAINTAINED indicará um valor Y se o usuário foi criado pelo Oracle e seus diversos scripts. Atualmente, no meu banco de dados de teste, tenho apenas um desses usuários.
SQL> selecione o nome de usuário de dba_users onde oracle_maintained<>'Y';USERNAME-------------------PEASLAND Uma nova coluna sobre a qual eu não tinha lido anteriormente era o usuário PROXY_ONLY_CONNECT. Essa visualização permite que você veja se um usuário permitirá conexões proxy. Caso você não esteja familiarizado com conexões proxy, isso pode ajudar a explicá-lo. Para obter mais informações, visite o Guia de referência SQL para ALTER USER e pesquise por "proxy_clause". A última nova coluna em DBA_USERS é COMMON. Eu não tinha ideia de para que servia essa coluna, então minha primeira parada foi o Guia de Referência para DBA_USERS. A descrição da coluna é “Indica se um determinado usuário é comum”. Ok... o que isso significa? O que define um usuário comum? Se eu consultar meu banco de dados de teste, recebo a seguinte saída:SQL> select username,common,oracle_maintained from dba_users;USERNAME COM O-------------------- ------------ ----PEASLA NÃO NAUDSYS SIM YGSMUSER Sim ysySkm Sim YXS $ null Sim yojvmsys sim yoracle_ocm sim ysysdg sim ydip sim ysysysbackup sim ygsmcatuser sim YSYS SIM SISTEMA SIM YOUTLN SIM SIMEntão, um usuário “comum” é mantido pela Oracle? Se sim, as colunas COMMON e ORACLE_MAINTAINED não são redundantes? Duvido que o Oracle inclua duas colunas que signifiquem a mesma coisa. Então eu embarquei em uma busca para encontrar a resposta... No Guia do Administrador, há uma pequena seção intitulada “Usuários Comuns e Usuários Locais”. O usuário comum é aquele que é comum a um banco de dados de contêiner e todos os bancos de dados conectáveis existentes e futuros na nova arquitetura de banco de dados multilocatário do Oracle 12c. Isso faz sentido agora.