Oracle数据库重启后密码失效的问题(r12笔记第91天)

简介:   前几天,我和系统运维的同事处理一个看似诡异的问题,他找到我说应用服务器启动的时候报了DB的Error,但是错误信息有限,他也没法完全定位到错误的原因,所以就希望我来帮忙看看这个问题是怎么回事,怎么解决。
1494575648795097437.gif

  前几天,我和系统运维的同事处理一个看似诡异的问题,他找到我说应用服务器启动的时候报了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了,这样一来问题就引刃而解了。

5945ff01-fb0b-481d-8178-5e8ae08de221.jpg




  





目录
相关文章
|
6天前
|
开发框架 Oracle 关系型数据库
ASP.NET实验室LIS系统源码 Oracle数据库
LIS是HIS的一个组成部分,通过与HIS的无缝连接可以共享HIS中的信息资源,使检验科能与门诊部、住院部、财务科和临床科室等全院各部门之间协同工作。 
19 4
|
11天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库:装上去,飞起来!
本文是一篇关于Oracle数据库安装和使用的博文摘要。作者以轻松幽默的笔调介绍了自己在实验中掌握的Oracle数据库基本操作,包括使用组件查看命令、配置数据库监听器等。作者也分享了在实验中遇到的一些有趣问题,如SQL语句缺少分号导致的意外错误。此外,作者还强调了登录sys用户和启动实例加载数据库的注意事项,并鼓励读者面对挑战时保持乐观,不断提升自己的能力。整体风格风趣严谨,引人入胜。
197 0
|
2月前
|
存储 Java 数据库
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(二)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
25 0
|
1天前
|
Oracle 关系型数据库 Java
plsql链接远程Oracle数据库步骤
实际工作中,我们往往需要使用 PLSQL Develope 工具连接远程服务器上的 ORACLE 数据库进行管理,但是由于 ORACLE 安装在本地电脑步骤繁琐,并且会耗费电脑的很大一部分资源,因此,我们寻求一种不需要在本地安装 ORACLE 数据库而能直接使用 PLSQL Develope 工具连接到远程服务器 ORACLE 的方法。
13 2
|
7天前
|
Oracle 关系型数据库 数据处理
某教程学习笔记(一):10、oracle数据库注入
某教程学习笔记(一):10、oracle数据库注入
6 0
|
28天前
|
SQL 存储 数据库
【数据库SQL server】自学终极笔记
【数据库SQL server】自学终极笔记
75 0
|
28天前
|
存储 Oracle 关系型数据库
【数据库数据恢复】Oracle数据库ASM磁盘组掉线的数据恢复案例
oracle数据库ASM磁盘组掉线,ASM实例不能挂载。数据库管理员尝试修复数据库,但是没有成功。
【数据库数据恢复】Oracle数据库ASM磁盘组掉线的数据恢复案例
|
Oracle 关系型数据库 数据库
oracle数据库控制文件的备份和恢复之三RMAN自动备份和恢复
使用RMAN自动备份的控制文件向数据库中恢复控制文件
289 0
|
Oracle 关系型数据库 数据库
|
SQL Oracle 关系型数据库
oracle数据库控制文件的备份和恢复之一手动备份和恢复
实验步骤:手动备份和恢复oracle控制文件
501 0

热门文章

最新文章

相关产品

  • 云迁移中心
  • 推荐镜像

    更多