`
lshh83
  • 浏览: 162548 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ORA-28000: the account is locked

阅读更多
最近两个朋友问我同样的问题,他们发现数据库里面有一个账户总是莫名其妙的被锁住,不知道是什么原因。
    我首先想到的是用户default profiles中的failed_login_attempts参数设置问题,然后扩展的问题是这个参数的精确含义及相关值查询。
   测试结果如下:
  
    1. 查询failed_login_attempts参数默认值:
      10g(备注:9i环境中此参数的值为unlimited)
      SQL> conn / as sysdba
       Connected.
       SQL> desc dba_profiles;
        Name                                      Null?    Type
        ----------------------------------------- -------- ----------------------------
        PROFILE                                   NOT NULL VARCHAR2(30)
        RESOURCE_NAME                             NOT NULL VARCHAR2(32)
        RESOURCE_TYPE                                      VARCHAR2(8)
        LIMIT                                              VARCHAR2(40)
      
       SQL> select resource_name, limit from dba_profiles where resource_name = 'FAILED_LOGIN_ATTEMPTS';
      
       RESOURCE_NAME                    LIMIT
       -------------------------------- ----------------------------------------
      FAILED_LOGIN_ATTEMPTS            10
     
       1 rows selected.
    
     2. 模拟账户被锁现象
        (为方便模拟lock现象,修改default profile failed_login_attempts=3 )
        a.修改参数failed_login_attempts=3
          SQL> conn / as sysdba;
          Connected.
          SQL>alter profile default limit failed_login_attempts 3;
          Profile altered.
        
        b.重现错误登陆
          正确登陆
         SQL> connecc_view/ecc@devdb1
          Connected.
          SQL> connecc_view/ecc@devdb1
          Connected.
          第一次登陆失败
         SQL> connecc_view/hh@devdb1
          ERROR:
          ORA-01017: invalid username/password; logon denied
          Warning: You are no longer connected toORACLE.
          第二次登陆失败
         SQL> connecc_view/hh@devdb1
          ERROR:
          ORA-01017: invalid username/password; logon denied
          第三次登陆失败
         SQL> connecc_view/hh@devdb1
          ERROR:
          ORA-01017: invalid username/password; logon denied
          连续3次登陆失败后,账户被锁住了
         SQL> connecc_view/hh@devdb1
          ERROR:
          ORA-28000: the account is locked
        
     3. 解锁
        SQL> conn / as sysdba
         Connected.
         SQL>alter user ecc_view account unlock;
         User altered.
       
     4. 解决方案
           (1) 可以考虑查询应用部署中错误的password或者数据库连接等可能导致错误password的地方,彻底的查询问题所在。
           (2) 修改参数failed_login_attempts=unlimited
              SQL>alter profile default limit failed_login_attempts unlimited;
               Profile altered.              
               SQL> select resource_name, limit from dba_profiles where resource_name = 'FAILED_LOGIN_ATTEMPTS';
              
               RESOURCE_NAME                    LIMIT
               -------------------------------- ----------------------------------------
               FAILED_LOGIN_ATTEMPTS            UNLIMITED
             
     5. 扩展知识点及备注说明
        (1)  Q: FAILED_LOGIN_ATTEMPTS=3 3的含义是什么?是累计失败次数还是连续失败次数?
               A: FAILED_LOGIN_ATTEMPTS=3的含义是从第一次登录失败开始计算,连续登陆失败的次数。而不是累计失败的次数。
                试验如下:
               SQL> connecc_view/ecc@devdb1
                Connected.
                第一次登陆失败
               SQL> connecc_view/hh@devdb1
                ERROR:
                ORA-01017: invalid username/password; logon denied
                Warning: You are no longer connected to ORACLE.
                第二次登陆失败
               SQL> connecc_view/hh@devdb1
                ERROR:
                ORA-01017: invalid username/password; logon denied
                正确登陆
               SQL> connecc_view/ecc@devdb1
                Connected.
                此时不是累计,而是重新计算
                第一次登陆失败
               SQL> connecc_view/hh@devdb1
                ERROR:
                ORA-01017: invalid username/password; logon denied
                Warning: You are no longer connected to ORACLE.
                第二次登陆失败
               SQL> connecc_view/hh@devdb1
                ERROR:
                ORA-01017: invalid username/password; logon denied
                第三次登陆失败
               SQL> connecc_view/hh@devdb1
                ERROR:
               ORA-01017: invalid username/password; logon denied
                三次登陆失败后,账户被锁
               SQL>  connecc_view/ecc@devdb1
                ERROR:
                ORA-28000: the account is locked
              
        (2)  Q: 如何从数据库中查询当前FAILED_LOGIN_ATTEMPTS的值?dba_profiles是限额,并不代表当前值,如果查询当前失败的值怎么查?
               A: select NAME,LCOUNT  from user$,user$为view dba_users的基表,通常可以查询一下试图对应的基表,oracle可能会隐藏一些参数
           
             初始值为0:
             SQL> select NAME,LCOUNT  from user$ where name = 'ECC_VIEW';
                  NAME                               LCOUNT
                  ------------------------------ ----------
                  ECC_VIEW                               0
                
             错误登陆一次后,值为1
            SQL> connecc_view/h@devdb1
                  ERROR:                    
                  ORA-01017: invalid username/password; logon denied
            SQL> select NAME,LCOUNT  from user$ where name = 'ECC_VIEW';  
                  NAME                               LCOUNT
                  ------------------------------ ----------
                  ECC_VIEW                               1
                
             错误登陆2次后,值为2
            SQL> connecc_view/h@devdb1
                  ERROR:                   
                  ORA-01017: invalid username/password; logon denied
             SQL> select NAME,LCOUNT  from user$ where name = 'ECC_VIEW'; 
                  NAME                               LCOUNT
                  ------------------------------ ----------
                  ECC_VIEW                                2
                 
             正确登陆一次后,此值重置为0
            SQL> connecc_view/ecc@devdb1
                  Connected.             
             SQL> select NAME,LCOUNT  from user$ where name = 'ECC_VIEW'; 
                  NAME                               LCOUNT
                  ------------------------------ ----------
                  ECC_VIEW                               0
分享到:
评论

相关推荐

    Oracle the account is locked解决办法

    当出现`ORA-28000: the account is locked`这样的错误提示时,表明当前尝试登录的账户已被锁定。这通常是因为账户密码连续多次输入错误导致的。 #### 查询锁定状态 在解决账户锁定问题之前,首先需要查询默认配置...

    oracle11g用户登录时被锁定问题的解决方法 (ora-28000 the account is locked)

    最近在操作oracle11g的使用出现错误的现象:ora-28000 the account is locked,既用户无法登录问题,如何解决此问题呢?下面小编给大家带来了oracle11g用户登录时被锁定问题的解决方法,感兴趣的朋友一起看看吧

    Oracle学习笔记

    - **账户被锁定**:在给定内容中提到了一个常见的错误消息:“ORA-28000: the account is locked”。这表示尝试登录的账户当前处于锁定状态,无法进行正常操作。解决此问题的方法是: - 首先,需要以DBA权限连接到...

    oracle数据库密码过期处理方法.docx

    此时,用户在尝试登录时会收到“ORA-28000: the account is locked”或“ORA-28001: the password has expired”的错误信息,无法进行任何操作。 二、处理密码过期的方法 1. **紧急模式登录(SQL*Plus as SYSDBA)*...

    oracle用户解锁三种方法

    当用户尝试登录并收到"ORA-28000: the account is locked"错误时,有几种方法可以解锁Oracle用户账户。下面将详细介绍这三种解锁方法。 **第一种方法:使用PL/SQL Developer** 1. 以`system`用户身份登录PL/SQL ...

    QC问题及解决方案

    - `[Mercury][Oracle JDBC Driver][Oracle] ORA-28000: the account is locked` 这些问题的出现可能是由两种情况导致的:一是QC登录数据库的用户名被锁定;二是数据库操作人员没有足够的权限。 ##### 原因分析 **...

    oracle用户解锁三种方法.doc

    如果你收到"ORA-28000: the account is locked"的错误信息,可以按照以下步骤操作: 1. 使用具有DBA权限的用户(如`system`)登录PL/SQL Developer,选择连接类型为"Sysdba"。 2. 在对象浏览器中查看"Users",找到...

    数据库密码过期解决办法.txt

    此外,还有一种情况是当用户尝试多次登录失败后,系统会锁定该用户账户,并给出ORA-28000: The account is locked(账户被锁定)的错误提示。这两种情况都会影响业务正常运行。 #### 解决方案 ##### 密码过期处理 ...

    win7下oracle的安装与卸载

    - **Oracle 错误处理**:遇到常见的错误如 ORA-28000: the account is locked 可能是因为账户被锁定,可以通过 `Alter user scott account unlock;` 解锁账户。 - **环境变量问题**:如果遇到 `oracle home is not ...

    oracle用户解锁

    在 PL/SQL Developer 中,如果使用 scott/tiger 登录时提示 ora-28000 the account is locked,可以使用以下方法来解锁。首先,以 sysdba 身份登录 conn sys/sys as sysdba; 然后,alter user scott account unlock;...

    Oracle数据库日常维护手册.pdf

    - **Shell命令**:`ps -ef | grep ora_ | grep -v grep && ps -ef | grep ora_ | grep -v grep | wc -l` - 此命令用于列出所有Oracle相关的进程,并通过`wc -l`计算进程总数。 - **进程数**:在生产环境中,此数值...

Global site tag (gtag.js) - Google Analytics