【案例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修改为正确的地址,重启服务后系统恢复正常。

相关推荐
Yeats_Liao17 分钟前
14:Servlet中的页面跳转-Java Web
java·后端·架构
未秃头的程序猿22 分钟前
告别"if-else地狱"!Java 21模式匹配,代码优雅了10倍
java·后端·面试
鹤望兰6751 小时前
字节跳动国际支付-后端开发-三面面经
java
Flittly1 小时前
【AgentScope Java新手村系列】(14)人机交互
java·spring boot·spring
RainCity1 小时前
Java Swing 自定义组件库分享(十二)
java·笔记·后端
xiezhr2 小时前
逛GitHub发现了一款免费的带AI功能的数据库管理工具
数据库·ai编程·dba
你听得到112 小时前
用户说 App 卡,但说不清在哪?我把 Flutter 监控 SDK 升级成了链路观测工作台
前端·flutter·性能优化
吃饱了得干活17 小时前
Spring Cloud Gateway 微服务网关:路由、断言、过滤器
java·spring cloud
lwx5728018 小时前
探秘InnoDB:搞懂它的内存、线程、磁盘与日志刷盘策略
java·后端
Flynt20 小时前
从Spring Boot 4.0升到4.1,我在Maven和gRPC上栽了跟头
java·spring boot·后端