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

相关推荐
wno70418 分钟前
Spring Security权限控制
java·python·spring
杨运交1 小时前
[071][验证码模块]基于Spring拦截器的验证码认证设计思想
java·后端·spring
Geek-Chow1 小时前
CountDownLatch in Java
java
IvorySQL1 小时前
IvorySQL 5.6 发布:PG 18.6 内核升级,沙盒即开即用
数据库·人工智能·postgresql
HwJack201 小时前
【HarmonyOS开发小实践】ArkUI 动画系统属性动画、显式动画与路径动画
ui·性能优化·harmonyos
SL_staff2 小时前
从RBAC到场景化授权:《无忧·企业文档》三级权限模型的技术实践解析
java·开源·产品
CNSSIRD数据库2 小时前
中国企业环境信用数据库2003-2026
大数据·数据库·数据分析·论文笔记
传奇开心果编程2 小时前
【springboot基础语法学与练】第 1 课:从零开始
java·spring boot·后端·学习
SL_staff2 小时前
财务系统慎用低代码?从数据模型闭环看合规落地的技术实践
java·低代码·全栈
Bruce_Liuxiaowei2 小时前
Python 实例赋值遮蔽类属性:一个从不报错的静默陷阱
开发语言·python·语法糖