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

相关推荐
万岳科技系统开发4 分钟前
智慧医院小程序开发推动医疗服务流程全面线上化
大数据·开发语言·人工智能
丈剑走天涯5 分钟前
JVM(九) JDK8 G1 (Garbage-First)
jvm
一只小灿灿6 分钟前
C++ 修饰符全面详解
开发语言·c++
马里马里奥-8 分钟前
从零搭建AI Agent工具链的技术文章大纲
开发语言·qt
GitLqr14 分钟前
Flutter 3.44 性能飞跃:深度解析 Android Platform View 的 HCPP 新特性
android·flutter·性能优化
三言老师20 分钟前
CentOS7.9:Redis服务器部署结构化实战教程
linux·运维·服务器·数据库
乐观的Terry20 分钟前
8、发布系统-完整流水线的核心
java·spring boot·spring·spring cloud
Alexalbb21 分钟前
从角色过滤到可审计授权:单体系统数据权限设计复盘与演进
java
番茄炒鸡蛋加糖34 分钟前
MySQL 实战调优& 分表基础
数据库·mysql
万亿少女的梦16843 分钟前
基于Spring Boot的游戏交易管理系统设计与实现
java·spring boot·mysql·系统设计·交易管理