iamlaosong文
1、数据库服务器的报账号被锁的错误,先解锁再细查原因,是修改用户口令造成的,口令修改后,每天的数据导入程序中配置的口令没有及时修改,导致错误登录次数超限被锁,查数据导入情况,果然数据没有导入,再查数据导入日志,显示连接失败,证实了用户被锁的原因就是导入程序所致。
教训:修改口令动一发而牵动全身,改前应做个详细预案,把方方面面考虑周全,特别是那些暂时不影响的。比如这个导入程序,需要第二天凌晨才用到。
2、解锁方法是用system用户(或者具有DBA角色的用户)登陆,进行解锁:
sql> alter user myuser account unlock;
User altered.
3、查看$ORACLE_HOME/network/log/listener.log日志可以分析哪个IP造成的,不过对我现在的情况不适用,因为访问是本机的导入程序,不通过监听程序。不过,用户失效后,另一台通过数据连接进行访问的服务器就不通了,所以监听日志中报错的就是这台服务器的IP。查看此服务器的报错日志,可以找到相关的连接错误日志,根据日志,还可以查看相应的trc文件(内容差不多),可以看出是存储过程再编译时候报的错,日志如下:
Sat Nov 12 06:30:20 2016
Errors in file /opt/app/oracle/admin/orcl/bdump/orcl_j000_9301.trc:
ORA-12012: error on auto execute of job 41
ORA-04045: errors during recompilation/revalidation of EMSSXJK.COSTS_SIMULATION
ORA-04052: error occurred when looking up remote object EMSSXJK.TB_EVT_MAIL_CLCT_QITA@DATALINK_G9.REGRESS.RDBMS.DEV.US.ORACLE.COM
ORA-00604: error occurred at recursive sql level 3
ORA-28000: the account is locked
ORA-02063: preceding line from DATALINK_G9
日志位置:/opt/app/oracle/admin/orcl/bdump/alert_orcl.log
用命令show parameter background_dump_dest查看位置。
4、可以用下面命令查看具体的被锁时间,不过要在解锁前查看哦。
select username,lock_date from dba_users ;
查一下试试,可以发现许多Oracle自建的用户从安装的时候就被锁了,比如Scott用户。
5、注: 一般数据库默认是10次尝试失败后锁住用户 1、查看Failed_LOGIN_ATTEMPTS的值 select * from dba_profiles 2、修改为30次 alter profile default limit Failed_LOGIN_ATTEMPTS 30; 3、修改为无限次(为安全起见,不建议使用) alter profile default limit Failed_LOGIN_ATTEMPTS unlimited;