网站首页 > 技术文章 正文
需求:
oracle数据库密码过期了,需要修改密码,数据库是RAC环境,同时连接数据库的有多套环境。
事件过程:
停了其中一个环境后(其他环境忘记停了)直接修改某用户数据库密码,第一次修改成功,过了十几分钟后发现用新的用户密码通过PLSQL连接数据库时会卡住,用sqlplus连接也会卡住,用DBA用户二次修改某用户数据库密码,同样会卡住,一直提示excuting。下面是报错截图:
解决思路:
1、初步以为用户给锁定了,但是alter user XX account unlock也会锁住,对其他用户操作没有影响,用该用户连接数据库也会hang住,但是其他用户不受影响
2、从网上资料了解到很有可能是由于11g的密码错误延时验证,造成library cache lock。
一开始检查可以看到,处于library cache lock都是JDBC的应用,sql id是空(即还没有开始跑sql)。
检查ash,发现应用唯一的一个sql id是b84cknyvnyq25,是update user$ 表。这就很容易让人联系起来登陆时用户的验证。
11g有个密码错误延时验证,当应用以错误的密码连接上来时,会持续不断的循环CPU,同时伴随library cache lock。
所以我这里设置event 28401来禁用这个特性。
具体的修改过程:
SQL>show parameter event NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ event string xml_db_events string enable SQL>alter system set event='28401 trace name context forever,level 1' scope=spfile; System altered.
-----问题来了,需要重启才能生效,但是我们的数据库是集中式数据库,不能重启!
3、查看该用户的session,发现有48个会话数,通过里面一个字段(记录了服务器hostname)发现有其他环境连接了数据库服务器,后来才想起外网也有一套环境应用还是用老的密码在连这个数据库,将外网环境停止,释放连接后过段时间用正确的账号密码可以连接,会话数也是释放了。
此时再启动应用也可以正常访问。
总结:
虽然之前一直知道oracle有这个特性,但还是疏忽大意了,上面是今天在处理事故的一个过程,希望对大家有点帮助。
在修改数据库密码的时候提前查看是不是有其他会话正在用这个账号密码连接数据库,确定没有其他session再做修改密码的操作会更安全。
后面会分享更多关于DBA内容,感兴趣的朋友可以关注下~
猜你喜欢
- 2024-10-16 oracle 11g dba用户秘密修改其他用户密码
- 2024-10-16 见招拆招:破解Oracle数据库密码 oracle数据库破解码怎么用
- 2024-10-16 【Oracle】查看 dblink 密码方法 oracle查看dbname
- 2024-10-16 oracle 11g“密码延迟验证”特性 oracle11密码永不过期
- 2024-10-16 破解ORACLE19C RAC的SYS用户密码有效期180天
- 2024-10-16 Oracle密码过期如何取消密码180天限制及密码180天过期
- 2024-10-16 Oracle视图dba_users_with_defpwd查看哪些用户还在使用默认密码
- 2024-10-16 Oracle 数据库设置密码永不过期 oracle数据库密码过期时间
- 2024-10-16 ORACLE11G 用户密码过期了怎么办?
- 2024-10-16 在Oracle中,哪个视图可以查询用户的密码是不是原始默认密码?
你 发表评论:
欢迎- 05-10如何优化数据库和前端之间的交互?
- 05-10前端代码优化小秘籍(前端优化24条建议)
- 05-10VS Code当中的15个神仙插件,值得收藏
- 05-10如何自己开发一个Google浏览器插件?
- 05-10前端流行框架Vue3教程:14. 组件传递Props效验
- 05-10吃了一年的SU,最好用的插件都在这了
- 05-10前端必看!这款神器让网站界面告别千篇一律
- 05-10程序员请收好:10个非常有用的 Visual Studio Code 插件
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端懒加载 (45)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle查询数据库 (45)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)