【案例95】“小”问题引发的“大”发现---记一次环境修复
问题现象
顾问在登录NC时发现无法登录到系统内部,报数据库相关错误。故检查了sysconfig数据源联通状态。经过测试报ORA-28000错误。故以为是简单问题,数据库密码过期导致服务异常。顾问希望帮他更改数据库密码并解锁。
本以为是个小问题,10分钟搞定。结果却搞了很久时间。
问题分析
ORA-28000,导致出现改错误的原因是:在oracle database 11g中,默认在default概要文件中设置了“FAILED_LOGIN_ATTEMPTS=10
”,当输入密码错误次数达到设置值将导致此问题。
确认用户所使用的概要文件
select username,profile from dba_users;
查看概要文件中有关登录次数的限制
select *from dba_profileswhere profile = 'DEFAULT'and resource_name = 'FAILED_LOGIN_ATTEMPTS';
如果尝试登录次数限制为10次,将尝试登录次数的限制修改为不受限
alter profile default limit failed_login_attempts unlimited;
修改后不需要重启数据库,修改结果即时生效。
修改后,还没有被提示ORA-28000警告的账户不会再碰到同样的问题,已被锁定用户仍需解锁,方法如下:
alter user <user_name> account unlock;
按照上述方法,已经解锁相关数据库用户,并也解锁。直接用sqlplus 连相关用户直接登录相关用户正常。
但是在sysconfig中测试依旧报错,通过PLSQL工具链接也异常。仔细查看了相关sysconfig配置。发现ODBC配置的为orcl,故怀疑是不是有人修改了相关配置。
通过查询相关数据库的实例名发现,现在数据库非orcl。
咨询顾问得知,他们有人动过相关环境,但不知修改了什么。怀疑此处发生变更,故修改sysconfig中相关配置。
以为没问题,重启服务后,再次登录相关环境发现报如下错误。找不到相关表。
于是直接查询相关表中数据发现无此表。结果为空。
查询此库下相关用户的数据发现也是空的。
故怀疑现在启动的实例的库为空库,并无相关数据。通过任务管理器发现启动了2个RDBMS,1个是之前的配置,1个是之后的配置。
故重启数据库,但数据库默认重启的就是无数据的RDBMS。现在就是想办法启动orcl即可解决相关问题。
解决方案
set ORACLE_SID=orcl
再次重启数据库,发现orcl启动成功。
sysconfig修改为正确的地址,重启服务后系统恢复正常。