《oracle11g用户被锁定the account is locked的解决办法》由会员分享,可在线阅读,更多相关《oracle11g用户被锁定the account is locked的解决办法(8页珍藏版)》请在金锄头文库上搜索。
1、Oracle11g 用户被锁定 the account is locked 的解决办法用 SQL Plus 登录时输入:conn scott/tiger给出提示:ERROR:ORA-28000: the account is locked解决方法:解决:(1)以 DBA 的身份登录另一个用户 ,输入:c: sqlplus sys/test1234 as sysdba(2)为 scott 解锁,输入:alter user scott account unlock;给出提示:用户已更改。SQL conn scott/tigerERROR:ORA-28001: the password has ex
2、pired更改 scott 的口令新口令:(3)输入新的密码 .测试、运行程序时,一般使用服务器上的 oracle 服务, 2010年春节后第一天来上班,服务器整体 down 掉了,所以只好使用本机的 oracle 服务,是两年装的,连 system 的密码都不记得了。首先,开启本地的 oracle 服务,开始设置按制面板管理工具服务 按字母“O”很快找到 oracle相关的九个服务,OracleOraDb10g_home1TNSListener 服务一般是开着的,因为开发人员一般都要在自己的机子上使用客户端连接远程的数据库服务器,如果大家没有开就开一下吧。OracleServiceORCL
3、服务,准确的说应该是 OracleServiceSID 服务,我的 SID 是的 oracle 默认的 ORCL,所以就是OracleServiceORCL ,也开启, OK 了。其次,在 NET Manager 中配置一个服务命名,记得以前在 NET Manager 中是会自动配置一个本地的服务命名的,好像是叫 LOCAL,但是在 oracle 10中没有,应该不会是我两年前删除了!那就自己配置吧,就那么几步,很简单了,到了最后测试,默认使用 scott /tiger 进行测试,出现 ora-280000 the account is locked 提示,换 system /manager
4、也是 ora-280000 the account is locked ,账号也锁定,看来得解决这个问题。解决 ora-280000 the account is locked 的问题:开始运行cmd 进行 DOS 界面输入:sqlplus.exe / as sysdba;SQLalert user scott account unlock;User altered.sqlcommit;Commit complete.SQLconn scott/tigerERROR:ORA-28001:the password has expiredChange password for scottNew p
5、assoword:Retype new passwordPassword changedConnect.SQLcommit;Commit complete.这个时候使用 scott/新的密码进行 net manager 测试可以成功,这样就解决了 ora-280000 the account is locked 的问题当使用同样的方法解决 system 登录时的 ora-280000 the account is locked 问题时:出现下面问题SQL con system/managerERROR:ORA-01017:invalid username/password ;logon den
6、ied Warning :You are no longer connect to ORACLE.改了密码试了 N 次,不行,这意味着我忘记了 system 的密码,呵呵,毕竟两年了。那下一个问题就是如果 system 的密码忘了怎么办?首先,使用上面提到的方法进入 sqlplusSQL conn /as sysdbaConnect.SQL alter user system identified by manager;User altered.SQLcommit;Commit complete.SQLconn system/manager;Connected.到此这个问题也解决。其实不管在
7、Net manager 中是否配置了本地服务命名,使用 SQL plus 都可以连接服务器,只要不写相应的 Host String 就可以。最近两个朋友问我同样的问题,他们发现里面有一个账户总是莫名其妙的被锁住,不知道是什么原因。我首先想到的是用户 default profiles 中的 failed_login_attempts 参数设置问题,然后扩展的问题是这个参数的精确含义及相关值查询。结果如下:1. 查询 failed_login_attempts 参数默认值:(备注:9i 环境中此参数的值为 unlimited)SQL conn / as sysdba Connected.SQL d
8、esc 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 101 rows selected.
9、2. 模拟账户被锁现象(为方便模拟 lock 现象,修改 default profile failed_login_attempts=3 )a.修改参数 failed_login_attempts=3SQL conn / as sysdba;Connected.SQLalter profile default limit failed_login_attempts 3;Profile altered.b.重现错误登陆正确登陆SQL connecc_view/eccdevdb1Connected.SQL connecc_view/eccdevdb1Connected.第一次登陆失败SQL con
10、necc_view/hhdevdb1ERROR: ORA-01017: invalid username/password; logon deniedWarning: You are no longer connected to.ORACLE 第二次登陆失败SQL connecc_view/hhdevdb1ERROR:ORA-01017: invalid username/password; logon denied第三次登陆失败SQL connecc_view/hhdevdb1ERROR:ORA-01017: invalid username/password; logon denied连续
11、3 次登陆失败后,账户被锁住了SQL connecc_view/hhdevdb1ERROR:ORA-28000: the account is locked3. 解锁SQL conn / as sysdbaConnected.SQLalter user ecc_view account unlock;User altered.4. 解决方案(1) 可以考虑查询应用部署中错误的 password 或者数据库连接等可能导致错误 password 的地方,彻底的查询问题所在。(2) 修改参数 failed_login_attempts=unlimitedSQLalter profile defaul
12、t 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 UNLIMITED5. 扩展知识点及备注说明 (1) Q: FAILED_LOGIN_ATTEMPTS=3 3的含义是什么?是累计失败次数还是连续失败次数?A: FAILED_LOGIN_ATTEMPTS=3的
13、含义是从第一次登录失败开始计算,连续登陆失败的次数。而不是累计失败的次数。试验如下:SQL connecc_view/eccdevdb1Connected.第一次登陆失败SQL connecc_view/hhdevdb1ERROR:ORA-01017: invalid username/password; logon deniedWarning: You are no longer connected to ORACLE.第二次登陆失败SQL connecc_view/hhdevdb1ERROR:ORA-01017: invalid username/password; logon denie
14、d正确登陆SQL connecc_view/eccdevdb1Connected.此时不是累计,而是重新计算第一次登陆失败SQL connecc_view/hhdevdb1ERROR:ORA-01017: invalid username/password; logon deniedWarning: You are no longer connected to ORACLE.第二次登陆失败SQL connecc_view/hhdevdb1ERROR:ORA-01017: invalid username/password; logon denied第三次登陆失败SQL connecc_view
15、/hhdevdb1ERROR:ORA-01017: invalid username/password; logon denied三次登陆失败后,账户被锁SQL connecc_view/eccdevdb1ERROR: 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错误登陆一次后,值为1SQL connecc_view/hdevdb1ERROR: ORA-01017: inval