Skip to content
ANBOB

ANBOB

提供综合数据库运维服务与优化方案(不限Oracle MySQL PG GaussDB GoldenDB OceanBase等), 微信/Tel:(+86)134-365-60330

  • 首页
  • 关于我
  • 联系我们

Oracle 12c New Feature: Last Login Time for Non-Sys Users

2021-08-212016-12-17 by weejar zhang

对于操作系统的SHELL登录通常都会打印该用户的上一次登录时间, 这个安全特性在12c中同样在使用sqlplus登录时引入默认显示在banner中, 不同的是oracle不显示sys或操作系统认证的登录, 其实在之前的版本中对于这类用户的登录是都强置记录在Adump的审计文件中的, 对于Windows环境会记录在系统日志中. 对于非sqlplus的登录不显示同样也会记录用户上次的登录信息在表中, 很多年前记的我遇到个需求:找出数据库中上时间不登录的用户? 之前如果没有审计还要用LOGON触发器记录, 现在在12c方便了, 这里我演示一下该特性.

[oracle@anbob ~]$ sqlplus c##anbob/oracle
SQL*Plus: Release 12.2.0.0.0 Beta on Fri Dec 16 22:39:32 2016
Copyright (c) 1982, 2015, Oracle.  All rights reserved.
Last Successful login time: Fri Dec 16 2016 22:38:30 +08:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.0.1 - 64bit Beta
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> 

TIP:
从上面的加亮提示的部分就是新特性增加的提示信息. 这些信息是记录在user$表的SPARE6列.

SQL> @desc dba_users
           Name                            Null?    Type
           ------------------------------- -------- ----------------------------
    1      USERNAME                        NOT NULL VARCHAR2(128)
    2      USER_ID                         NOT NULL NUMBER
    3      PASSWORD                                 VARCHAR2(4000)
    4      ACCOUNT_STATUS                  NOT NULL VARCHAR2(32)
    5      LOCK_DATE                                DATE
    6      EXPIRY_DATE                              DATE
    7      DEFAULT_TABLESPACE              NOT NULL VARCHAR2(30)
    8      TEMPORARY_TABLESPACE            NOT NULL VARCHAR2(30)
    9      LOCAL_TEMP_TABLESPACE                    VARCHAR2(30)
   10      CREATED                         NOT NULL DATE
   11      PROFILE                         NOT NULL VARCHAR2(128)
   12      INITIAL_RSRC_CONSUMER_GROUP              VARCHAR2(128)
   13      EXTERNAL_NAME                            VARCHAR2(4000)
   14      PASSWORD_VERSIONS                        VARCHAR2(12)
   15      EDITIONS_ENABLED                         VARCHAR2(1)
   16      AUTHENTICATION_TYPE                      VARCHAR2(8)
   17      PROXY_ONLY_CONNECT                       VARCHAR2(1)
   18      COMMON                                   VARCHAR2(3)
   19      LAST_LOGIN                               TIMESTAMP(9) WITH TIME ZONE
   20      ORACLE_MAINTAINED                        VARCHAR2(1)
   21      INHERITED                                VARCHAR2(3)
   22      DEFAULT_COLLATION                        VARCHAR2(100)
   23      IMPLICIT                                 VARCHAR2(3)

SQL> select last_login from dba_users where username='C##ANBOB';

LAST_LOGIN
---------------------------------------------------------------------------
16-DEC-16 10.38.30.000000000 PM +08:00

对于PDB的用户:

[oracle@anbob ~]$ sqlplus anbob/anbob

SQL*Plus: Release 12.2.0.0.0 Beta on Sat Dec 17 16:44:36 2016
Copyright (c) 1982, 2015, Oracle.  All rights reserved.
Last Successful login time: Fri Dec 02 2016 15:37:04 +08:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.0.1 - 64bit Beta
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

USERNAME             INST_NAME            HOST_NAME                 SID   SERIAL#  VERSION    STARTED  SPID       OPID  CPID            SADDR            PADDR
-------------------- -------------------- ------------------------- ----- -------- ---------- -------- ---------- ----- --------------- ---------------- ----------------
ANBOB                PDBORCL-orcl         anbob                     52    37497    12.2.0.0.1 20161217 5226       56    5224            00000000BE29EA28 00000000BFCCAF08

SQL> 

对于/ SYSDBA 或其它OS认证:

[oracle@anbob ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.0.0 Beta on Sat Dec 17 16:45:34 2016
Copyright (c) 1982, 2015, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.0.1 - 64bit Beta
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options 
-- OR

[oracle@anbob ~]$ sqlplus sys/oracle as sysdba
SQL*Plus: Release 12.2.0.0.0 Beta on Sat Dec 17 16:45:59 2016
Copyright (c) 1982, 2015, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.0.1 - 64bit Beta
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

-- OR

SQL> create user weejar identified by weejar;
User created.
SQL> grant sysoper to weejar;
Grant succeeded.
SQL> grant create session to weejar;
Grant succeeded.

[oracle@anbob ~]$ sqlplus weejar/weejar as sysoper

SQL*Plus: Release 12.2.0.0.0 Beta on Sat Dec 17 17:01:32 2016
Copyright (c) 1982, 2015, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.0.1 - 64bit Beta
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL>

SQL> select last_login from dba_users where username='WEEJAR';
LAST_LOGIN
----------------------------
--NONE

SQL> @desc v$pwfile_users
Name Null? Type
------------------------------- -------- ----------------------------
1 USERNAME VARCHAR2(128)
2 SYSDBA VARCHAR2(5)
3 SYSOPER VARCHAR2(5)
4 SYSASM VARCHAR2(5)
5 SYSBACKUP VARCHAR2(5)
6 SYSDG VARCHAR2(5)
7 SYSKM VARCHAR2(5)
8 ACCOUNT_STATUS VARCHAR2(30)
9 PROFILE VARCHAR2(128)
10 LAST_LOGIN TIMESTAMP(9) WITH TIME ZONE
11 LOCK_DATE DATE
12 EXPIRY_DATE DATE
13 EXTERNAL_NAME VARCHAR2(1024)
14 AUTHENTICATION_TYPE VARCHAR2(8)
15 COMMON VARCHAR2(3)
16 CON_ID NUMBER

SQL> select username,LAST_LOGIN,SYSDBA,SYSOPER from v$pwfile_users;

USERNAME LAST_LOGIN SYSDB SYSOP
------------------------------ ------------- ----- -----
SYS TRUE TRUE
WEEJAR FALSE TRUE

tip:
对于SYS 或sysoper这类操作认识的用户登录时不会显示.

登录时sqlplus 的-nologintime选项可以禁掉显示上次的登录时间.

SQL> select last_login from dba_users where username='C##ANBOB';

LAST_LOGIN
---------------------------------------------------------------------------
17-DEC-16 04.30.58.000000000 PM +08:00

[oracle@anbob ~]$ sqlplus -nologintime c##anbob/oracle
SQL*Plus: Release 12.2.0.0.0 Beta on Sat Dec 17 16:49:08 2016
Copyright (c) 1982, 2015, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.0.1 - 64bit Beta
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL>  select last_login from dba_users where username='C##ANBOB';

LAST_LOGIN
---------------------------------------------------------------------------
17-DEC-16 04.49.08.000000000 PM +08:00

TIP:
虽然使用nologintime可以关掉登录时的显示,但是同样还是会更新user$表里的登录时间. 后续版本(21c or newer 19c RU)中可能会引入_disable_last_successful_login_time 参数来禁用该特性,因为存在一些连接风暴导致library cache lock,p3值可以取到namespace为127,在等待Last_Successful_Logon_Time.

SQL> select KGLSTDSC from  X$KGLST where indx=127;

KGLSTDSC
----------------------------------------------------------------
Last_Successful_Logon_Time

Summary:
last login time特性是通过sqlplus时才显示,数据来自user$表, 不显示sys和其它通过操作组OS认证的用户, 可以使用-nologintime禁掉登录时的提示login信息,但是对于NONE-SYS用记同样还是会更新数据字典表.

— update 2021/08/16 —
如果在login 时hang或 libaray cache lock ,SQL如下
update user$ set spare6=DECODE(to_char(:2, ‘YYYY-MM-DD’), ‘0000-00-00’, to_date(NULL), :2) where user#=:1

user$.spare6对应的就是last_login , ORACLE已经对12c和19c推出了bug 补丁用入引入禁用LSLT, 需要安装Patch 32164034 才会引入_disable_last_successful_login_time 。

20c没有,21c base版本已经引入

SQL> @i

USERNAME             INST_NAME            HOST_NAME                  I# SID   SERIAL#  VERSION    STARTED  SPID       OPID  CPID            SADDR            PADDR
-------------------- -------------------- ------------------------- --- ----- -------- ---------- -------- ---------- ----- --------------- ---------------- ----------------
SYS                  CDB$ROOT-oracle21c   oel7db1                     1 1     54741    21.0.0.0.0 20210821 11143      43    11000           0000000077741858 00000000775910E0


SQL> @pd login_time
Show all parameters and session values from x$ksppi/x$ksppcv...

       NUM N_HEX NAME                                                     VALUE                          DESCRIPTION
---------- ----- -------------------------------------------------------- ------------------------------ ---------------------------------------------------------------------------------------------------
       802   322 _disable_last_successful_login_time                      FALSE                          Disable writing Last Successful Login Time to USER$

Categories ORACLE 9i-23ai Tags Last Login Time, Last_Successful_Logon_Time, nologintime, ORACLE安全
understand 11G clusterware logfile(保留策略及修改方式)
Leap Second (闰秒) 在ORACLE环境的影响
  • AI
  • Cloud
  • Exadata
  • Mongo/Redis
  • MySQL/TiDB/GoldenDB
  • OceanBase
  • OGG
  • ORACLE 9i-23ai
  • PostgreSQL/GaussDB
  • Redis
  • SQL Server
  • 其它国产库
  • 岁月
  • 开发语言
  • 系统相关
  • 达梦

Archives

  • September 2025 (5)
  • August 2025 (5)
  • July 2025 (7)
  • June 2025 (5)
  • May 2025 (8)
  • April 2025 (11)
  • March 2025 (5)
  • February 2025 (3)
  • January 2025 (8)
  • December 2024 (13)
  • November 2024 (17)
  • October 2024 (17)
  • September 2024 (13)
  • August 2024 (12)
  • July 2024 (13)
  • June 2024 (14)
  • May 2024 (11)
  • April 2024 (10)
  • March 2024 (10)
  • February 2024 (8)
  • January 2024 (12)
  • December 2023 (15)
  • November 2023 (8)
  • October 2023 (13)
  • September 2023 (10)
  • August 2023 (7)
  • July 2023 (14)
  • June 2023 (15)
  • May 2023 (12)
  • April 2023 (8)
  • March 2023 (10)
  • February 2023 (7)
  • January 2023 (8)
  • December 2022 (12)
  • November 2022 (6)
  • October 2022 (6)
  • September 2022 (9)
  • August 2022 (9)
  • July 2022 (11)
  • June 2022 (5)
  • May 2022 (7)
  • April 2022 (11)
  • March 2022 (6)
  • February 2022 (4)
  • January 2022 (8)
  • December 2021 (9)
  • November 2021 (9)
  • October 2021 (3)
  • September 2021 (4)
  • August 2021 (11)
  • July 2021 (7)
  • June 2021 (8)
  • May 2021 (3)
  • April 2021 (4)
  • March 2021 (8)
  • January 2021 (4)
  • December 2020 (7)
  • November 2020 (5)
  • October 2020 (2)
  • September 2020 (11)
  • August 2020 (7)
  • July 2020 (13)
  • June 2020 (16)
  • May 2020 (24)
  • April 2020 (7)
  • March 2020 (11)
  • February 2020 (6)
  • January 2020 (10)
  • December 2019 (3)
  • November 2019 (6)
  • October 2019 (8)
  • September 2019 (5)
  • August 2019 (10)
  • July 2019 (3)
  • June 2019 (8)
  • May 2019 (2)
  • April 2019 (3)
  • March 2019 (6)
  • February 2019 (9)
  • January 2019 (1)
  • December 2018 (6)
  • November 2018 (5)
  • October 2018 (2)
  • September 2018 (6)
  • August 2018 (5)
  • July 2018 (4)
  • June 2018 (1)
  • May 2018 (6)
  • April 2018 (1)
  • March 2018 (3)
  • January 2018 (4)
  • December 2017 (5)
  • November 2017 (2)
  • October 2017 (1)
  • September 2017 (2)
  • August 2017 (6)
  • July 2017 (2)
  • June 2017 (3)
  • May 2017 (3)
  • April 2017 (6)
  • March 2017 (13)
  • February 2017 (6)
  • January 2017 (5)
  • December 2016 (8)
  • November 2016 (9)
  • October 2016 (2)
  • September 2016 (7)
  • August 2016 (10)
  • July 2016 (3)
  • June 2016 (4)
  • May 2016 (3)
  • April 2016 (4)
  • March 2016 (4)
  • February 2016 (2)
  • January 2016 (1)
  • December 2015 (2)
  • November 2015 (2)
  • October 2015 (6)
  • September 2015 (4)
  • August 2015 (6)
  • July 2015 (5)
  • June 2015 (9)
  • May 2015 (8)
  • April 2015 (3)
  • March 2015 (2)
  • February 2015 (4)
  • January 2015 (7)
  • December 2014 (11)
  • November 2014 (5)
  • October 2014 (5)
  • September 2014 (6)
  • August 2014 (5)
  • July 2014 (7)
  • June 2014 (1)
  • May 2014 (5)
  • April 2014 (6)
  • March 2014 (8)
  • February 2014 (11)
  • January 2014 (6)
  • December 2013 (6)
  • November 2013 (5)
  • October 2013 (6)
  • September 2013 (7)
  • August 2013 (8)
  • July 2013 (5)
  • June 2013 (7)
  • May 2013 (5)
  • April 2013 (8)
  • March 2013 (9)
  • February 2013 (1)
  • January 2013 (12)
  • December 2012 (20)
  • November 2012 (10)
  • October 2012 (9)
  • September 2012 (9)
  • August 2012 (8)
  • July 2012 (22)
  • June 2012 (11)
  • May 2012 (17)
  • April 2012 (8)
  • March 2012 (13)
  • February 2012 (7)
  • January 2012 (9)
  • December 2011 (19)
  • November 2011 (16)
  • October 2011 (15)
  • September 2011 (21)
  • August 2011 (23)
  • July 2011 (22)
  • June 2011 (37)
  • May 2011 (39)
  • April 2011 (31)
  • March 2011 (26)
  • February 2011 (14)
  • January 2011 (23)
  • December 2010 (30)
  • November 2010 (17)
  • December 2009 (1)
  • November 2009 (1)
  • September 2009 (1)

标签

19C BACKUP/RECOVERY DataGuard dblink exadata Goldengate HAIP lob mysql oceanbase OGG ora-600 ORA-1017 ORA-4031 ora-7445 ORACLE11g oracle 12.2 ORACLE 12C ORACLE ADMIN ORACLE ADMIN oracle asm oracle dataguard oracle goldengate oracle internal oracle oem oracle plsql/sql oracle rac ORACLE安全 oracle安装 oracle 异常 oracle教材 oracle 权限管理 oracle管理 OS Command OS Command partition Performance tuning postgresql Redis row cache lock shell Troubleshooting Troubleshooting 备份与恢复 年终总结
版权所有© 2008-2027 weizhao.zhang (ANBOB.COM)

禁止未经授权的数据爬取行为,并保留追究法律责任的权利。