oracle用户被锁

场景:打包部署时jdbc配置文件中的oracle密码错误。

结果:oracle用户被锁。

原因分析:一般数据库默认是 10 次尝试失败后锁住用户

用于Linux的环境变量未配置,必须在oracle用户当前执行文件下以dba登入:sqlplus / as sysdba

1、用dba角色的用户登陆,进行解锁,先设置具体时间格式,以便查看具体时间
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; 
Session altered. 

2、查看具体的被锁时间
SQL> select username,lock_date from dba_users where username='TEST'; 
USERNAME LOCK_DATE  TEST 2011-03-10 08:51:03

3、解锁
SQL> alter user test account unlock; 

还可以将一个用户锁住:

  1: SQL> ALTER USER username ACCOUNT LOCK;

User altered. 

SQL>commint;

4、查看是那个ip造成的test用户被锁

查看$Oracle_HOME/network/admin/log/listener.log日志
10-MAR-2011 08:51:03 * (CONNECT_DATA=(SID=lhoms)(SERVER=DEDICATED)(CID=(PROGRAM=oracle)(HOST=omstestdb)(USER=oraoms))) * (ADDRESS=(PROTOCOL=tcp)(HOST=218.77.123.123)(PORT=49434)) * establish * lhoms * 0
10-MAR-2011 08:51:03 * (CONNECT_DATA=(SID=lhoms)(SERVER=DEDICATED)(CID=(PROGRAM=oracle)(HOST=omstestdb)(USER=oraoms))) * (ADDRESS=(PROTOCOL=tcp)(HOST=218.77.123.123)(PORT=49435)) * establish * lhoms * 0

这样可知是上面218.77.123.123的ip尝试多次失败登陆造成的被锁

修改:用户一般数据库默认是 10 次尝试失败后锁住用户
1、查看FAILED_LOGIN_ATTEMPTS的值
select * from dba_profiles where RESOURCE_NAME = 'FAILED_LOGIN_ATTEMPTS';
2、修改为30次
alter profile default limit FAILED_LOGIN_ATTEMPTS 30;
3、修改为无限次(为安全起见,不建议使用)
alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;

Oracle数据库用户定时,我们需要找出被定的原因。以下是几种可能的原因及其解决方案: 1. 密码错误次数超过限制 如果用户在一定时间内输入错误密码的次数超过了限制,那么该用户将被定。可以通过以下语句查找被定的用户: ``` SELECT * FROM dba_users WHERE account_status LIKE '%LOCKED%'; ``` 解锁定的用户: ``` ALTER USER username ACCOUNT UNLOCK; ``` 2. 用户自己定 如果用户在自己的会话中使用了以下命令将自己定,则该用户将被定: ``` ALTER USER username ACCOUNT LOCK; ``` 解锁定的用户: ``` ALTER USER username ACCOUNT UNLOCK; ``` 3. 账户过期 如果用户的账户过期,该用户将被定。可以通过以下语句查找已过期的用户: ``` SELECT * FROM dba_users WHERE expiry_date < SYSDATE AND account_status NOT IN ('LOCKED', 'EXPIRED(GRACE)'); ``` 解锁定的用户: ``` ALTER USER username ACCOUNT UNLOCK; ``` 4. 触发器定 如果用户在执行某些操作时触发了一个定触发器,则该用户将被定。可以查找该用户的会话ID,并使用以下命令终止会话: ``` SELECT s.sid, s.serial#, s.username, s.status, s.osuser, s.machine FROM v$session s, v$process p WHERE s.paddr = p.addr AND s.username = 'username'; ALTER SYSTEM KILL SESSION 'sid,serial#'; ``` 需要注意的是,在终止会话之前,必须与用户确认是否要终止该会话。 总之,要解决Oracle用户的问题,需要先找出被定的原因,然后根据具体情况采取相应的措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值