0
点赞
收藏
分享

微信扫一扫

Oracle11g登录账户被锁定解决办法

1.场景:采用zhangsan账户登录库,提示账户被锁无法登陆

[oracle@dbstandby07 ~]$ sqlplus  zhangsan/pass123321

SQL*Plus: Release 11.2.0.1.0 Production on Thu Oct 10 15:07:46 2024

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

ERROR:
ORA-28000: the account is locked

解决办法:采用系统账户登录oracle库

[oracle@dbprimary07 ~]$  sqlplus  /  as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Thu Oct 10 15:15:01 2024

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
##执行下面的sql 解除锁,由于忘记原来登录账户的密码,于是重新设置新的密码

SQL>  ALTER USER zhangsan ACCOUNT UNLOCK;

User altered.
SQL> ALTER USER zhangsan IDENTIFIED BY pass123321;

#验证结果

[oracle@dbprimary07 etc]$ sqlplus  zhangsan/pass123321

SQL*Plus: Release 11.2.0.1.0 Production on Thu Oct 10 15:16:31 2024
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
#查看当前登录用户:
SQL> show user;
USER is "ZHANGSAN"

SQL> set line 200 pages 200;
#查看当前登录用户下的表:
SQL> select * from employees;

EMPLOYEE_ID FIRST_NAME
----------- ------------------------------------------------------------------------------------------------------------------------------------------------------
LAST_NAME                                                                                                                                              HIRE_DATE           SALARY
------------------------------------------------------------------------------------------------------------------------------------------------------ --------------- ----------
          1 John
Doe                                                                                                                                                    01-JAN-21                1

SQL> 

也可以采用类似MySQL命令行免交互方式查看Oracle11g中的信息

sqlplus zhangsan/pass123321 <<EOF     
SET PAGESIZE 0 FEEDBACK OFF HEADING OFF ECHO OFF
show user;              
EXIT;
EOF

[oracle@dbprimary07 etc]$ sqlplus zhangsan/pass123321 <<EOF     
SET PAGESIZE 0 FEEDBACK OFF HEADING OFF ECHO OFF
show user;              
EXIT;
EOF


SQL*Plus: Release 11.2.0.1.0 Production on Thu Oct 10 16:03:33 2024

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

*SQL> SQL> USER is "ZHANGSAN"*
SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@dbprimary07 etc]$ 

2.补充个关于oracle11g的密码策略知识点

Oracle 11g中账户密码默认不会被锁定。但是,如果尝试登录失败次数超过了数据库的默认限制,账户可能会被锁定。这个限制可以通过查询PROFILE来确定。 可以通过以下步骤查询账户密码失败次数和账户是否被锁定: 登录到Oracle数据库。 查询DBA_PROFILES视图来找到账户的FAILED_LOGIN_ATTEMPTS和PASSWORD_LOCK_TIME参数。

SELECT * FROM DBA_PROFILES WHERE PROFILE = 'DEFAULT' AND RESOURCE_NAME = 'FAILED_LOGIN_ATTEMPTS';
SELECT * FROM DBA_PROFILES WHERE PROFILE = 'DEFAULT' AND RESOURCE_NAME = 'PASSWORD_LOCK_TIME';

SQL> set line 200

SQL> SELECT * FROM DBA_PROFILES WHERE PROFILE = 'DEFAULT' AND RESOURCE_NAME = 'FAILED_LOGIN_ATTEMPTS';

PROFILE                                                                                    RESOURCE_NAME
------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------
RESOURCE_TYPE            LIMIT
------------------------ ------------------------------------------------------------------------------------------------------------------------
DEFAULT                                                                                    FAILED_LOGIN_ATTEMPTS
PASSWORD                 10


SQL> SELECT * FROM DBA_PROFILES WHERE PROFILE = 'DEFAULT' AND RESOURCE_NAME = 'PASSWORD_LOCK_TIME';

PROFILE                                                                                    RESOURCE_NAME
------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------
RESOURCE_TYPE            LIMIT
------------------------ ------------------------------------------------------------------------------------------------------------------------
DEFAULT                                                                                    PASSWORD_LOCK_TIME
PASSWORD                 1

#FAILED_LOGIN_ATTEMPTS 显示了在账户被锁定之前允许的失败登录尝试次数默认为10次。

#PASSWORD_LOCK_TIME 显示了账户被锁定的时间默认为1天(天数)。

如果你想要修改这些参数,你可以使用ALTER PROFILE命令

ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS 10;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LOCK_TIME 1;

特别提示: Oracle 11g 默认会将 DEFAULT 的 PROFILE 设置登录失败尝试次数(10 次)。这样在无意或恶意的连续使用错误密码连接时,导致数据库用户被锁住,影响业务。因此需要将登录失败尝试次数设为不限制

alter profile "DEFAULT" limit PASSWORD_GRACE_TIME UNLIMITED;
alter profile "DEFAULT" limit PASSWORD_LIFE_TIME UNLIMITED;
alter profile "DEFAULT" limit PASSWORD_LOCK_TIME UNLIMITED;
alter profile "DEFAULT" limit FAILED_LOGIN_ATTEMPTS UNLIMITED;

以上就是本次的分享的内容,欢迎留言一起交流和学习。

举报

相关推荐

0 条评论