Oracle数据库重启后密码失效的问题(r12笔记第91天)
前几天,我和系统运维的同事处理一个看似诡异的问题,他找到我说应用服务器启动的时候报了DB的Error,但是错误信息有限,他也没法完全定位到错误的原因,所以就希望我来帮忙看看这个问题是怎么回事,怎么解决。
从应用服务启动的日志来看,错误信息是连接池的地方有了问题。
Error: 2017-06-09 10:04:59 init connpool:one or more conn open error.
Error: 2017-06-09 10:12:50 init connpool:one or more conn open error.
带着疑问我根据他提供的基本信息定位到了数据库服务端的端口,查看监听器的日志,发现下面的一段内容:
09-JUN-2017 10:06:46 * <unknown connect data> * 12537
TNS-12537: TNS:connection closed
TNS-12560: TNS:protocol adapter error
TNS-00507: Connection closed
Linux Error: 115: Operation now in progress
09-JUN-2017 10:06:54 * <unknown connect data> * 12537
TNS-12537: TNS:connection closed
TNS-12560: TNS:protocol adapter error
TNS-00507: Connection closed
Linux Error: 115: Operation now in progress
这是一个12c的环境,这个CDB里面有大概8个PDB,所以我得定位到具体的PDB继续测试。
如果说是CDB级别的数据库层面有问题,我可以看到有几个PDB的连接数大概有300多个。而出问题的PDB连接数确实为0,这一点也确实有些怪异。
是这个PDB有问题吗,我看PDB的状态是READ WRITE,连接没有任何限制,而且我使用已有的一个用户名和密码做连接测试是没有问题的。况且在这位同事范酷IDE那个时间点,我们也没有做什么操作,这样想来就很奇怪了。
而问题的分析一下子陷入了僵局,系统运维的同学找不到更多的信息,而我也得不到很多明确的信息。当然问题既然反馈,还是可能存在的,于是我开始逐个梳理这些信息,当查到这个关联用户的状态时,我感觉应该是哪里出了问题。SQL> SELECT USERNAME,ACCOUNT_STATUS FROM CDB_USERS WHERE USERNAME LIKE 'SH_USER';
USERNAME ACCOUNT_STATUS
SH_USER EXPIRED(GRACE)
这个用户的状态竟然是expired(grace),这样一个状态该怎么理解呢。这个用户为什么会失效呢,如果这样想来,这个问题就有了一个基本的思路。
为什么会失效,默认11g的数据库中的profile为DEFAULT时,其中一个属性PASSWORD_LIFE_TIME 是 180,也就是半年的样子,密码就会失效。
那么问题来了,这个业务是个长连接的场景,哪怕失效了,在当前的会话里面还是能够保持连接的,这个问题我就可以回答了,因为前一天晚上碰到了一个PGA的报警,我做了重启,而应用层面有了重连机制,所以大部分的会话连接都没有问题,而这个PDB的profile设置保持了默认值,在断开连接之后重连就会碰到账户失效的问题。
这样一来解决方法就相对简单,因为应用端是加密的密码,我也无从得知原来的明文密码,所以我们就可以重置密码,有个小技巧。
SQL> select name,password from user$ where name='USER_SH';
NAME PASSWORD
------------------------------ ---------------------------
USER_SH E2E9010EA87D283F
然后直接重置即可。
alter user USER_SH identified by values 'E2E9010EA87D283F';
这样密码没有改变,账户的状态就为open了,这样一来问题就引刃而解了。
Oracle数据库重启后密码失效的问题(r12笔记第91天)相关推荐
- oracle数据库Sys密码策略,Oracle数据库加固之密码策略解析
我们都知道密码策略加固的参数一般包括密码长度.复杂度检测.最大最小使用时间.过期警报时间.最大登录失败次数以及锁定时间等设置. Oracle默认提供了一个密码策略的sql执行文件utlpwdmg.sq ...
- 不停应用重启oracle数据库,此类情况下解决Oracle数据库重启的四种方案
原题:Oracle数据库重启(内存参数numperm_global相关) 故障描述 Oracle数据库发生重启. 系统环境 AIX 6100-07-05-1228 Oracle 11g 故障分析 首先 ...
- oracle修改数据库用户名密码,怎样修改oracle数据库的用户名密码
对于不经常使用数据库的同学们来说,忘记用户名密码是很常见的一件事.下面就让学习啦小编给大家说说怎样修改oracle数据库的用户名密码吧. 修改oracle数据库用户名密码的方法 进入cmd命令界面(快 ...
- 忘记oracle管理员密码了,解决oracle数据库忘记系统管理员密码
解决oracle数据库忘记系统管理员密码 下面我分两步讲解这个问题,1)Oracle数据库的三种认证机制:2)oracle数据库忘记系统管理员密码怎么办? 1.Oracle数据库的三种认证机制 a)操 ...
- oracle数据库账号密码忘记,忘记了oracle数据库用户的密码
当我们忘记了oracle数据库的用户的密码,同时又不知道比该用户权限更大的用户的密码,该怎么办呢?下面是学习啦小编收集整理的忘记了oracle数据库用户的密码,希望对大家有帮助~~ 忘记了oracle ...
- MySQL--忘记密码,重置密码重启服务密码失效(Windows)
一.问题说明 最近在Windows下操作mysql数据库,我装的是mysql5.7版本的,但是忘记了安装时设置的密码, 通过mysqld -nt --skip-grant-tables 跳过安全检查登 ...
- 服务器重启oracle数据库服务器,oracle数据库怎么重启_网站服务器运行维护,oracle,数据库,重启...
linux操作系统好学吗_网站服务器运行维护 学习大多类似鹿丁解牛,对事物的认识一般都是由浅入深.由表及里的过程,循序才能渐进.学习Linux同样要有一定的顺序和方法,这样学起来就不会感觉到难了. o ...
- 登录Oracle数据库遇到ORA-01017密码错误的解决办法
文章目录 症状 分析 解决办法 我们在登录Oracle数据库时可能会遇到ORA-01017错误,这里分析原因并提供解决办法. 点击试看博主的专著<MySQL 8.0运维与优化>(清华大学出 ...
- oracle修改数据库用户名密码,修改oracle数据库用户名及密码的方法
改oracle数据库用户名称和密码(Linux为例),有需要的朋友可以参考下. 一.修改前准备工作: 使用ssh工具以root身份连接服务器, 然后切换到oracle用户:su - oracle(回车 ...
最新文章
- 参考文献必备神器:这个插件能快速知道收藏的论文是否靠谱
- 输入今天是星期几的序号,给今天和昨天赋予枚举值,并输出昨天是星期几的枚举值
- 自学是一门艺术:踏上数据科学、人工智能和机器学习的自学之路
- 如何使用网络库实现应用级消息收发
- NCHW与NC4HW4数据排布在卷积优化上的优劣分析
- 什么是python函数_Python之什么是函数
- vue-cli 脚手架移除、安装(最新版安装)、检测安装结果 - npm篇
- 01 掌握运算符的分类 1204
- js 将多个对象合并成一个对象
- linux登录交换机备份脚本,如何从Linux上备份和恢复许多Cisco路由器和交换机的配置?...
- 手动编译安装lanmp centos6.5 64位
- cocos2dx lua 升级spine兼容Spine库v3.8到最新版本
- 计算机三级网络技术无纸化考试模拟软件(2019.3 2019.9) 包含激活码 未来教育
- 一文将 DCDC 的 Layout 讲的明明白白,收藏这篇就够了
- 在单核CPU下,有必要存在多线程吗?
- 包政讲营销录音(1)
- Graham算法构造凸包(python)
- Win10邮件应用怎么添加网易邮箱
- html崩溃手机代码15,这12行代码分分钟让你电脑崩溃手机重启
- Request请求转发与URL编码