ORACLE数据库用户锁定及解锁
相关错误:ORA-28000: the account is locked
错误解析:帐号被锁定
错误原因:在oracle11g中,默认在default概要文件中设置了FAILED_LOGIN_ATTEMPTS=10,当输入密码错误次数达到设置值将导致此问题。
解决方法:
1.确认用户所使用的概要文件:
sys@COREDB>select username,profile from dba_users;
USERNAME PROFILE
------------------------------ ------------------------------
SENDER DEFAULT
OGG DEFAULT
CMS DEFAULT
MYCOMM DEFAULT
CARCTRL DEFAULT
DP DEFAULT
ORACLE_OCM DEFAULT
XS$NULL DEFAULT
MDDATA DEFAULT
DIP DEFAULT
APEX_PUBLIC_USER DEFAULT
SPATIAL_CSW_ADMIN_USR DEFAULT
SPATIAL_WFS_ADMIN_USR DEFAULT
DBSNMP DEFAULT
FLOWS_FILES DEFAULT
MDSYS DEFAULT
ORDSYS DEFAULT
EXFSYS DEFAULT
WMSYS DEFAULT
APPQOSSYS DEFAULT
APEX_030200 DEFAULT
OWBSYS_AUDIT DEFAULT
ORDDATA DEFAULT
CTXSYS DEFAULT
ANONYMOUS DEFAULT
XDB DEFAULT
ORDPLUGINS DEFAULT
OWBSYS DEFAULT
SI_INFORMTN_SCHEMA DEFAULT
OLAPSYS DEFAULT
SYS DEFAULT
SYSTEM DEFAULT
OUTLN DEFAULT
33 rows selected.
这说明使用的都是默认的概要文件。
2.查看概要文件中有关登录次数的限制:
sys@COREDB>select * from dba_profiles where profile='DEFAULT' and resource_name='FAILED_LOGIN_ATTEMPTS';
PROFILE RESOURCE_NAME RESOURCE LIMIT
------------------------------ -------------------------------- -------- ----------------------------------------
DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10
3.如果尝试登录次数限制为10次,将尝试登录次数的限制修改为不受限:
sys@COREDB>alter profile default limit failed_login_attempts unlimited;
Profile altered.
4.查看被锁定用户:
sys@COREDB>select username,account_status from dba_users where not account_status = 'OPEN';
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SPATIAL_WFS_ADMIN_USR EXPIRED & LOCKED
SPATIAL_CSW_ADMIN_USR EXPIRED & LOCKED
APEX_PUBLIC_USER EXPIRED & LOCKED
DIP EXPIRED & LOCKED
MDDATA EXPIRED & LOCKED
XS$NULL EXPIRED & LOCKED
ORACLE_OCM EXPIRED & LOCKED
OLAPSYS EXPIRED & LOCKED
SI_INFORMTN_SCHEMA EXPIRED & LOCKED
OWBSYS EXPIRED & LOCKED
ORDPLUGINS EXPIRED & LOCKED
XDB EXPIRED & LOCKED
ANONYMOUS EXPIRED & LOCKED
CTXSYS EXPIRED & LOCKED
ORDDATA EXPIRED & LOCKED
OWBSYS_AUDIT EXPIRED & LOCKED
APEX_030200 EXPIRED & LOCKED
APPQOSSYS EXPIRED & LOCKED
WMSYS EXPIRED & LOCKED
DBSNMP LOCKED(TIMED)
EXFSYS EXPIRED & LOCKED
ORDSYS EXPIRED & LOCKED
MDSYS EXPIRED & LOCKED
FLOWS_FILES EXPIRED & LOCKED
SYSTEM LOCKED(TIMED)
OUTLN EXPIRED & LOCKED
26 rows selected.
EXPIRED & LOCKED 口令到期并锁定
LOCKED(TIMED) 密码错误次数超过了系统设置的允许最大次数,用户被锁定
5.给指定用户解锁:
sys@COREDB>alter user system account unlock;
User altered.
1、通常我们遇到oracle用户密码输入多次错误,那么改用户就会变锁定,那么解决方法很简单,如下:
使用plsql工具sys用户登录(亦可dos命令输入:sqlplus / as sysdba ) 解锁
ALTER USER 用户名 ACCOUNT UNLOCK;
2、那么遇到这种用户会被锁的情况,我们可以设置用户密码无限次尝试登录,而该用户不会被锁定:
ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;
3、另外,做项目运维的小伙伴经常遇到数据库用户密码过期的情况,要定期去修改密码很麻烦,那么我们可以设置用户密码不过期:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;