数据库用户被锁,拒绝用户登录

发布时间:  2015-04-25 浏览次数:  97 下载次数:  0
问题描述
系统日志中数据库连接错误,错误码ORA-28000。

错误日志:
ORA-28000:theaccountislocked
使用sys用户登录数据库ipcc。
检查用户状态
SELECT * FROM DBA_USERS;
检查ACCOUNT_STATUS,正常值为“OPEN”。被锁时,值为“LOCKED(TIMED)”。
查看指定概要文件的密码有效期设置
SELECT * FROM DBA_PROFILESS WHERE RESOURCE_NAME='FAILED_LOGIN_ATTEMPTS';
LIMIT值为“DEFAULT”或其他较小的整数。
处理过程
1. 将尝试登录失败次数由默认的10次修改成“无限制”。 ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTSUN LIMITED;

2. 被锁定的帐户解除锁定:

ALTER USER ICD ACCOUNT UNLOCK

3. 为分析具体服务,需要创建监控。记录登录IP以及程序名称。

使用sys用户登录ipcc,创建触发器.
create or replace trigger logon_denied_to_alert
after server error on database
declare
messagevarchar2(120);
IPvarchar2(15);
v_os_uservarchar2(80);
v_modulevarchar2(50);
v_actionvarchar2(50);
v_pidvarchar2(10);
v_sidnumber;
begin
IF(ora_is_servererror(01017))---sqlerrorcode,网上给出的有1017,可能为数据库设置方法不同造成
then
if sys_context('userenv','network_protocol')='tcp'
then
IP:=sys_context('userenv','ip_address');
else
select distinctsidintov_sid from sys.v_$mystat;
SELECTp.SPID
intov_pid
FROMV$PROCESSp,
V$SESSIONv
WHEREp.ADDR=v.PADDR
ANDv.sid=v_sid;
endif;
v_os_user:=sys_context('userenv','os_user');
dbms_application_info.READ_MODULE(v_module,v_action);
message:=to_char(sysdate,'DyMonddHH24:MI:SSYYYY')||
'logondeniedfrom'||nvl(IP,v_pid)||''||v_os_user||
'with'||v_module||''||v_action;
--insertintologinerrorvalues(message);--创建表loginerror,存储登录错误信息
sys.dbms_system.ksdwrt(2,message);---输出信息至alert_ipcc.log
endif;
end;

4. 检查错误日志alert_ipcc.log。

/opt/oracle/diag/rdbms/ipcc/ipcc/trace/
/opt/oracle/为$ORACLE_BASE目录,安装多个数据库时,可能不同。
监控日志:tail-falert_ipcc.log
日志举例如下:
FriFeb2207:12:172013logondeniedfrom192.164.1.244t00213768withdcs.exe
FriFeb2207:12:192013
FriFeb2207:12:192013logondeniedfrom192.164.1.244t00213768withdcs.exe
FriFeb2207:12:222013
FriFeb2207:12:222013logondeniedfrom192.164.1.244t00213768withdcs.exe
FriFeb2207:12:262013
FriFeb2207:12:262013logondeniedfrom192.164.1.244t00213768withdcs.exe
FriFeb2207:12:312013
FriFeb2207:12:312013logondeniedfrom192.164.1.244t00213768withdcs.exe
或者通过建登录错误日志表,查询日志表。
select*fromloginerror;

5. 修改DCS连接数据库的密码.数据库恢复正常。

6. 恢复尝试登录失败次数。

ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS10;
删除触发器logon_denied_to_alert。
如果建日志表,删除loginerror表。
根因
一般为某服务不断以错误的账号密码连接数据库,导致该账号被锁定。

END