【案例95】“小”问题引发的“大”发现---记一次环境修复

问题现象

顾问在登录NC时发现无法登录到系统内部,报数据库相关错误。故检查了sysconfig数据源联通状态。经过测试报ORA-28000错误。故以为是简单问题,数据库密码过期导致服务异常。顾问希望帮他更改数据库密码并解锁。

本以为是个小问题,10分钟搞定。结果却搞了很久时间。

问题分析

ORA-28000,导致出现改错误的原因是:在oracle database 11g中,默认在default概要文件中设置了"FAILED_LOGIN_ATTEMPTS=10",当输入密码错误次数达到设置值将导致此问题。

确认用户所使用的概要文件
sql 复制代码
select username,profile from dba_users;
查看概要文件中有关登录次数的限制
sql 复制代码
select *
  from dba_profiles
 where profile = 'DEFAULT'
   and resource_name = 'FAILED_LOGIN_ATTEMPTS';

如果尝试登录次数限制为10次,将尝试登录次数的限制修改为不受限
sql 复制代码
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即可解决相关问题。

解决方案

bash 复制代码
set ORACLE_SID=orcl

再次重启数据库,发现orcl启动成功。

sysconfig修改为正确的地址,重启服务后系统恢复正常。

相关推荐
HelloWorld工程师5 小时前
@Primary 注解
java·spring
geovindu5 小时前
rust: Borg Pattern(续)
开发语言·后端·设计模式·rust·博格模式
aqiu1111116 小时前
【C++算法打怪专栏】8. 字符串转换整数 (atoi)
开发语言·c++·算法
爱吃香菜的初学者6 小时前
十四.Linux——消息队列
linux·运维·开发语言
迅猛龙办公室7 小时前
python实现倒序输出数字
开发语言·python
夏幻灵12 小时前
JavaScript this 面试:五种绑定规则、优先级与常见面试陷阱
开发语言·javascript·面试
程序猿编码13 小时前
榨干 RTX5090 算力!Qwen3 专用单卡推理引擎,手写C++/CUDA 算子实现 MTP 推测解码
开发语言·c++·大模型推理·qwen3·多模态推理
IvorySQL14 小时前
PostgreSQL 日报|修复截断 zstd 备份检测(10 月 9 日)
数据库·postgresql
刘胡子大叔14 小时前
SQL 脚本的导入顺序
数据库·sql
bkspiderx14 小时前
Qt 插件机制:动态扩展应用功能的核心框架
开发语言·qt·元数据·qt 插件·qpluginloader