zoukankan      html  css  js  c++  java
  • 用SYS本地登录或远程登录引起ORA01031错误

      "历史总是上演惊人的相似", 在技术开发过程中,你也会总会碰到惊人相似的问题,这段时间我就碰到了”ORA-01031:insufficient privileges  权限不足”这个错误多次,一次是自己,一次是同事碰到的,顺便整理了下这个知识点。

    情况一:

    如果数据库实例安装在服务器A上,你用管理员权限Administrator登录后,使用SQL> conn system/manage as sysdba登录 没有问题。但是如果你在服务器A上建立一个etl账号,使它率属于Remote Desktop Users 和Users 组,如下所示:

    此时你用sys账号登录数据库时,就会报ORA-01031:insufficient privileges错误,退出etl账号,用管理员登录给etl账号赋予率属于Oracle DBA Group的权限

    然后用etl账号登录,问题解决了,如果你赋予etl账号管理员组权限,但是没有ora_dba权限,如下所示, 结果会怎样?答案是依然会报权限不足的错误

     

    情况二:此时我在远程机器B上,我使用sys账号远程登录时报ORA-01031:insufficient privileges或ORA-01017: invalid username/password; logon denied错误。

    首先去检查下sqlnet.ora文件下是否有SQLNET.AUTHENTICATION_SERVICES= (NTS)设置,如何已经配置了这个选项。那么我们接下来检查下一下密码文件参数

    很明显密码文件存在,如果查询没有记录,则说明密码文件不存在,需要重建密码文件,有时候我们确实是sysdba的权限,为什么登录却提示你的权限不够叻?这里的问题可能出现在密码文件里,由于你的密码文件缺损或者不存在,而ORALCE实例对sysdba的权限是根据这个密码文件来判断的,为什么这样做呢?如果我们的数据库没有OPEN,那么对于的一些动态视图是不能打开的,所以ORACLE必须把这些用户的口令和USERNAME放在一个独立的文件里,这样在数据库还不是OPEN的状况写,有个地方判断了。使用orapwd命令重建密码文件。orapwd命令的用法如下。

    接下来查看系统参数remote_login_passwordfile

    如果VALUE值不是EXCLUSIVE,那么需要设置参数remote_login_passwordfile的值为EXCLUSIVE,有一次我检查配置了上述所有配置后,发现都符合,在远程用SQL*PLUS登录后,居然报如下错误

    ORA-01017: invalid username/password; logon denied错误,很是纳闷,仔细检查了所有配置后,最后发现居然是服务器B的Guest账号被禁用了(如下所示)


    启用了Guest账号,然后在机器A上用sys账号登录,此时又报ORA-01031: insufficient privileges,赶紧给Guest账号添加ora_dba用户组,问题解决了。

    扫描上面二维码关注我
    如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
  • 相关阅读:
    PHP生成xml 无法识别或是无法读取或是浏览器不识别等问题
    关于PHP 采集类
    Centos7 下安装Docke
    Git使用之设置SSH Key
    yii2.0中Rbac 怎么添加超加管理员
    Undefined index: HTTP_RAW_POST_DATA的解决办法
    window下phpstudy的nginx配置虚拟主机
    yii2.0中添加二维数组,多条数据。
    预防onion比特币勒索病毒,如何快速关闭135,137,138,139,445端口
    github与git之间怎么建立连接
  • 原文地址:https://www.cnblogs.com/kerrycode/p/2454507.html
Copyright © 2011-2022 走看看