一个低级的ORA-01017错误

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 一个低级的ORA-01017错误

事件缘由: 
使用sys账户创建了一个数据清理的存储过程,再创建一个Oracle job定时运行这个存储过程,用于做表数据的清理。第二天看表数据未删除,说明job执行有错,打算使用sys账号登录查看job运行情况,反复输入sys账户信息,总提示ORA-01017, 
一个低级的ORA-01017错误
1.尝试改sys用户密码,重试报错依旧。 
2.使用sys登录GC,报错相同。使用普通用户登录正常。 
3.数据库服务器上使用sqlplus sys/oracle@dep182 as sysdba登录正常。

问题排查和原因:  根据以上信息,可能有朋友已经基本了解为何有这种现象了。 1.上述问题反映的现象是远程使用sys账户无法登录,数据库服务器本地使用TNS方式连接正常,首先排除密码错误。 2.查看$ORACLE_HOME/dbs,存在密码文件orapwDEP,为了保险起见,备份旧的密码文件后,重建了密码文件,问题依旧。 3.查询v$pwfile_users表记录,发现是空,  一个低级的ORA-01017错误 关于v$pwfile_users的描述: V$PWFILE_USERS lists all users in the password file, and indicates whether the user has been granted the SYSDBA, SYSOPER, and SYSASM privileges. 奇怪了,明明有密码文件,为什么这显示的记录是空? 4.回头再来看密码文件,Linux下密码文件的命名格式是orapw$ORACLE_SID,已存的文件名是orapwDEP,再看下ORACLE_SID:  一个低级的ORA-01017错误 我勒个去,ORACLE_SID是小写的dep,但文件却使用了大写,低级的错误。 接下来就比较简单了,重建密码文件: orapwd file=orapwdep password=oracle entries=30 无论是远程,还是GC,都可以正常登录了。  一个低级的ORA-01017错误

总结: 
1.Oracle中有不少大小写敏感的参数设置,一定要仔细,否则就会产生各种困扰。 
2.Oracle的密码文件实际定义了拥有sysdba等权限用户的列表,因此远程使用普通用户访问就不会受到密码文件的限制。 
3.密码文件和v$pwfile_users两者关系,可以参考惜纷飞的这篇博文,使用各种实验说明了两者的关联。 
xifenfei.com/2011/12/vpwfile_users和密码文件关系.html

如果您觉得此篇文章对您有帮助,欢迎关注微信公众号:bisal的个人杂货铺,您的支持是对我最大的鼓励!

一个低级的ORA-01017错误
本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 一个低级的ORA-01017错误


 上一篇
Tuxedo服务无法启动的问题解决(涉及MP下tlisten和TLOG的报错) Tuxedo服务无法启动的问题解决(涉及MP下tlisten和TLOG的报错)
今天同事说有一个Tuxedo应用在做测试,但重启了机器和Tuxedo环境后,服务仍无法启动,这次的问题排查和处理比较典型,值得梳理一次。 应用环境: OS:SunOS 5.9 Tuxedo:9.1,MP双机环境 问题现象: 由于
下一篇 
新增非空约束字段在不同版本中的演进 新增非空约束字段在不同版本中的演进
开发提了一个数据库变更需求,新增一字段,没有NOT NULL非空约束,但有默认值为NULL。看起来有些奇怪,因为若字段允许NULL,其默认值就是NULL,不用显示声明,可以创建一个无DEFAULT NULL的新增字段再查看desc表结构,就