SQL> select * from v$version where rownum=1;

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

SQL> !cat /etc/issue 

Enterprise Linux Enterprise Linux Server release 5.5 (Carthage)

Kernel \r on an \m



从oracle10g開始,对用户默认登陆失败次数有限制,默认用户的failed_login_attempts设置口令的失败次数为10,假设10次登陆失败。则该用户被锁定:

SQL> select * from dba_profiles where resource_name='FAILED_LOGIN_ATTENMPTS';

未选定行


上面没有选定的行是由于上次被我设置限制了,以下我们设置:

SQL> alter profile default limit failed_login_attempts 2;



配置文件已更改

SQL>  select * from dba_profiles where resource_name='FAILED_LOGIN_ATTEMPTS';



PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT

------------------------------ -------------------------------- -------- ----------------------------------------

DEFAULT                        FAILED_LOGIN_ATTEMPTS            PASSWORD 2

MONITORING_PROFILE             FAILED_LOGIN_ATTEMPTS            PASSWORD UNLIMITED

当然也能够无限制:

SQL> alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;





配置文件已更改





SQL> select * from dba_profiles where resource_name='FAILED_LOGIN_ATTEMPTS';





PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT

------------------------------ -------------------------------- -------- ----------------------------------------

DEFAULT                        FAILED_LOGIN_ATTEMPTS            PASSWORD UNLIMITED

MONITORING_PROFILE             FAILED_LOGIN_ATTEMPTS            PASSWORD UNLIMITED


以下我们模拟当两次失败登陆提示:



[oracle@localhost ~]$ sqlplus /nolog





SQL*Plus: Release 11.2.0.1.0 Production on 星期三 6月 10 18:52:02 2015





Copyright (c) 1982, 2009, Oracle.  All rights reserved.





SQL> conn hr/w

ERROR:

ORA-01017: invalid username/password; logon denied









SQL> conn hr/w

ERROR:

ORA-01017: invalid username/password; logon denied









SQL> conn hr/w

ERROR:

ORA-28000: the account is locked





失败登陆次数的限制有利于数据库的安全,生产库能够使用。



可是怎样知道当前失败多次了呢?



用户的状态信息是通过dba_users来展现的:

SQL> select count(*) from dba_users;



运行计划

----------------------------------------------------------

Plan hash value: 3953741735





-------------------------------------------------------------------------------------------------------

| Id  | Operation                   | Name                    | Rows  | Bytes | Cost (%CPU)| Time     |

-------------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT            |                         |     1 |    86 |    30  (10)| 00:00:01 |

|   1 |  SORT AGGREGATE             |                         |     1 |    86 |            |          |

|*  2 |   HASH JOIN                 |                         |    11 |   946 |    30  (10)| 00:00:01 |

|*  3 |    HASH JOIN                |                         |    11 |   913 |    23  (14)| 00:00:01 |

|*  4 |     HASH JOIN               |                         |    11 |   880 |    20  (10)| 00:00:01 |

|*  5 |      HASH JOIN              |                         |    14 |   994 |    18  (12)| 00:00:01 |

|*  6 |       HASH JOIN OUTER       |                         |    14 |   952 |    10  (10)| 00:00:01 |

|*  7 |        HASH JOIN            |                         |    14 |   546 |     8  (13)| 00:00:01 |

|   8 |         MERGE JOIN CARTESIAN|                         |     1 |    11 |     4   (0)| 00:00:01 |

|*  9 |          TABLE ACCESS FULL  | PROFILE$                |     1 |     9 |     2   (0)| 00:00:01 |

|  10 |          BUFFER SORT        |                         |     1 |     2 |     2   (0)| 00:00:01 |

|  11 |           TABLE ACCESS FULL | PROFNAME$               |     1 |     2 |     2   (0)| 00:00:01 |

|* 12 |         TABLE ACCESS FULL   | USER$                   |    36 |  1008 |     3   (0)| 00:00:01 |

|* 13 |        TABLE ACCESS FULL    | RESOURCE_GROUP_MAPPING$ |     1 |    29 |     2   (0)| 00:00:01 |

|  14 |       TABLE ACCESS FULL     | TS$                     |    20 |    60 |     7   (0)| 00:00:01 |

|* 15 |      TABLE ACCESS FULL      | PROFILE$                |     2 |    18 |     2   (0)| 00:00:01 |

|  16 |     TABLE ACCESS FULL       | USER_ASTATUS_MAP        |     9 |    27 |     2   (0)| 00:00:01 |

|  17 |    TABLE ACCESS FULL        | TS$                     |    20 |    60 |     7   (0)| 00:00:01 |

-------------------------------------------------------------------------------------------------------


看下底层表USER$:

SQL> DESC USER$

 名称                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                               
                                                                             是否为空? 类型

 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 USER#                                                                                                          NOT NULL NUMBER

 NAME                                                                                                           NOT NULL VARCHAR2(30)

 TYPE#                                                                                                          NOT NULL NUMBER

 PASSWORD                                                                                                        VARCHAR2(30)

 DATATS#                                                                                                        NOT NULL NUMBER

 TEMPTS#                                                                                                        NOT NULL NUMBER

 CTIME                                                                                                          NOT NULL DATE

 PTIME                                                                                                           DATE

 EXPTIME                                                                                                         DATE

 LTIME                                                                                                           DATE

 RESOURCE$                                                                                                      NOT NULL NUMBER

 AUDIT$                                                                                                          VARCHAR2(38)

 DEFROLE                                                                                                        NOT NULL NUMBER

 DEFGRP#                                                                                                         NUMBER

 DEFGRP_SEQ#                                                                                                     NUMBER

 ASTATUS                                                                                                        NOT NULL NUMBER

 LCOUNT                                                                                                         NOT NULL NUMBER

 DEFSCHCLASS                                                                                                     VARCHAR2(30)

.........

.........

以上的探索思路,来自eygle大师《循序渐进,ORACLE 数据库管理,优化与备份恢复》一书。

LCOUNT非常让人敏感:

SQL> select name,lcount from user$ where name='HR';

NAME                               LCOUNT

------------------------------ ----------

HR                                      0



==========================================================

[oracle@localhost ~]$ sqlplus /nolog





SQL*Plus: Release 11.2.0.1.0 Production on 星期三 6月 10 19:03:40 2015





Copyright (c) 1982, 2009, Oracle.  All rights reserved.





SQL> conn hr/s

ERROR:

ORA-01017: invalid username/password; logon denied



SQL>  select name,lcount from user$ where name='HR';





NAME                               LCOUNT

------------------------------ ----------

HR                                      1





================================================



SQL> conn hr/s

ERROR:

ORA-01017: invalid username/password; logon denied





SQL> select name,lcount from user$ where name='HR';





NAME                               LCOUNT

------------------------------ ----------

HR                                      2





通过实验,我们发现lcount这个字段记录的是失败登陆次数。如登陆成功后,自己主动清空为0

假设再继续研究,则不得不提起之前文章中提起的重要脚本:sql.bsq,读者感兴趣自行研究


版权声明:本文博主原创文章。博客,未经同意不得转载。

The account is locked的更多相关文章

  1. scott/tiger登录时提醒ora-28000 the account is locked

    scott/tiger登录时提示ora-28000 the account is locked在plsql developer中要是以scott/tiger登录时提示ora-28000 the acc ...

  2. oracle报错:ORA-28000: the account is locked

    连接数据库的时候报: ORA-28000: the account is locked 解决方法: cmd-进入命令行 C:\Users\0>sqlplus /nolog SQL*Plus: R ...

  3. 解决ORA-28000: the account is locked

    原文地址:http://yanwushu.sinaapp.com/ora-28000-the-account-is-locked/ 在oracle中.连续十次尝试登陆不成功.那么此账户将会被锁定(lo ...

  4. 一旦ORA-28000: the account is locked用户锁定故障排除

    今天我的同事们反映的问题,测试库的变化password,并改变相关的应用程序中使用password后,其中一个仍然会出现在帐户被锁定,报告ORA-28000: the account is locke ...

  5. Oracle 11g password过期被锁定报道 ORA-28000 the account is locked

    一.触发这个错误的原因及相关因素 是因为oracle11g中默认在default概要文件里设置了"PASSWORD_LIFE_TIME=180天"所导致.在Oracle 11g中是 ...

  6. ORA-28000: the account is locked解决办法

    ORA-28000: the account is locked第一步:使用PL/SQL,登录名为system,数据库名称不变,选择类型的时候把Normal修改为Sysdba;第二步:选择myjob, ...

  7. ORA-28000: the account is locked 查哪个具体ip地址造成

    查系统默认的策略,连续验证10次错误帐户即会被锁 SQL> select resource_name, limit from dba_profiles where profile='DEFAUL ...

  8. Oracle案例07——ORA-28000: the account is locked

    遇到这个错误,一般我们想到的是数据库用户被锁,只需要执行用户解锁即可恢复,但这里之所以写出来是因为比较奇葩的一个问题. 昨天下午接同事信息,说一个用户连接报被锁,经过沟通发现其实连接一个ADG的备库作 ...

  9. 出现“ORA-28000:the account is locked”的解决办法

    在Oracle 11g版本中,出于安全的考虑,所有Oracle的默认用户,包括SCOTT用户都被锁定.输入用户名和口令之后,会出现错误“ORA-28000:the account is locked” ...

随机推荐

  1. JavaScript 中的事件设计

    1. 事件绑定的几种方式  主要介绍一下 最常用的事件设计 其他就稍微带过. 直接在代码里面添加onclick指定函数名字. B) 在JS代码中通过dom元素的onclick等属性 这种做法this表 ...

  2. 给linux设置grub密码

    一.明文加密:vim /etc/grub.conf在hiddemenu下面新增一行,输入:password 密文然后:wq保存退出 在开机出现退数菜单的时候,按任意键,就会出现启动选择菜单,这时下面的 ...

  3. linux下安装软件的方法

    1. 区分 rpm -qi -qf -ql -qa四个不同选项组合的作用?rpm -qi //查询已经安装的某个RPM软件包的信息rpm -qf //查询某个程序文件是由哪个RPM软件包安装的rpm ...

  4. JavaScript操作剪贴板(转)

    IE是第一个支持与剪贴板相关的事件,以及通过JavaScript访问剪贴板数据的浏览器.IE的实现成为了某种标准,不仅Safari 2.Chrome和Firefox 3也都支持类似的事件和剪贴板(Op ...

  5. MVC与三层架构的关系

  6. Js弹性漂浮广告代码

    <html><head><meta http-equiv="Content-Type" content="text/html; charse ...

  7. 控制用户的访问之权限、角色【weber出品必属精品】

    权限的作用 限制用户对数据的访问 权限的分类 1. 系统权限:能够存取数据库的权限 2. 对象权限:操作数据库对象的内容 系统权限  1.1 如何创建用户: SQL> create user t ...

  8. HSSFClientAnchor(int dx1,int dy1,int dx2,int dy2,short col1,int row1,short col2, int row2)

      public HSSFClientAnchor(int dx1, int dy1, int dx2, int dy2, short col1, int row1, short col2, int  ...

  9. table超过30个字段如何处理呢? bootstrap

    样式: @media (max-width: 768px) { .table-supplier { width: 100%; height: 100%; margin-bottom: 12.75px; ...

  10. C# 扩展方法克隆实体类

    using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using System.Ru ...