一个低级的ORA-01017错误

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

大家好,又见面了,我是你们的朋友全栈君。

事件缘由
使用sys账户创建了一个数据清理的存储过程,再创建一个Oracle job定时运行这个存储过程,用于做表数据的清理。第二天看表数据未删除,说明job执行有错,打算使用sys账号登录查看job运行情况,反复输入sys账户信息,总提示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表记录,发现是空,
这里写图片描述

关于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:
这里写图片描述
我勒个去,ORACLE_SID是小写的dep,但文件却使用了大写,低级的错误。

接下来就比较简单了,重建密码文件:

orapwd file=orapwdep password=oracle entries=30

无论是远程,还是GC,都可以正常登录了。
这里写图片描述

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138070.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 国家授时中心NTP服务器地址

    国家授时中心NTP服务器地址国家授时中心新的NTP服务器地址:ntp.ntsc.ac.cn

    2022年5月21日
    344
  • mysql之视图、索引

    mysql之视图、索引视图 什么是视图 视图(View)是一种虚拟存在的表,同真实表一样,视图也由列和行构成,但视图并不实际存在于数据库中。行和列的数据来自于定义视图的查询中所使用的表,并且还是在使用视图时动态生成的。数据库中只存放了视图的定义,并没有存放视图中的数据,这些数据都存放在定义视图查询所引用的真实表中。使用视图查询数据时,数据库会从真实表中取出对应的数据。因此,视图中的数据是依赖于真实表中的数据的。一旦真实表中的数据发生改变,显示在视图中的数据也会发生改变。 视图的作用 定制用户数据,聚焦

    2022年7月22日
    12
  • Ubuntu 18.04 firefox浏览器装flash[通俗易懂]

    Ubuntu 18.04 firefox浏览器装flash[通俗易懂]进入http://get.adobe.com/cn/flashplayer/即flash官网(注意下载和系统浏览器相对应的包)在左边选择.tar.gz格式的文件然后解压  tar-zxvfinstall_flash_player_11_linux.x86_64.tar.gz进入解压后的usr文件夹,把libflashplayer.so文件放到路径/usr/lib/mozilla/…

    2022年6月8日
    34
  • Vue实现文件上传和文件下载

    Vue实现文件上传和文件下载文件下载:文件下载通常有几种方法1.通过url下载2.location.href3.form提交直接下载4.HTML5a.download结合blob对象进行下载第一种方式:第一种方法是前后端的接口只给了一个API请求:前端第一个实现是使用a标签,第二种方式:这个方法是直接把DataURLs或者BlogURLs传到浏览器地址中触发下载。有两种…

    2022年7月15日
    27
  • java 写入properties文件_Java读写Properties配置文件

    java 写入properties文件_Java读写Properties配置文件Java 读写 Properties 配置文件 1 Properties 类与 Properties 配置文件 Properties 类继承自 Hashtable 类并且实现了 Map 接口 也是使用一种键值对的形式来保存属性集 不过 Properties 有特殊的地方 就是它的键和值都是字符串类型 2 Properties 中的主要方法 1 load InputStreami 这个方法可以从 properti

    2025年9月30日
    2
  • js中对象转数组_js如何转数组

    js中对象转数组_js如何转数组今天睡前看到小组群里贴了这么一张图,印象中曾经面试的时候好像也是遇到过,对于大佬们来说这肯定是很基础的一道题,在此分享给正在学习前端和正在面试的小伙伴们。这里我用fo……in……实现了两种取值方式的改变letobj={json:0,production:1,html:2}vararr=[];for(letiinobj){leto={};o[i…

    2025年11月5日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号