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用户组,问题解决了。

    扫描上面二维码关注我
    如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
  • 相关阅读:
    李开复:如何设计你的2015年度计划(转)
    深入浅出 Java 多线程(转)
    maven常见问题汇总 专题
    Introduction to the Build Lifecycle
    具体解释EBS接口开发之WIP模块接口
    Shell脚本编程具体解释
    [数字图像处理]图像去噪初步(1)--均值滤波器
    hdu-4302-Holedox Eating-线段树-单点更新,有策略的单点查询
    响应式设计:理解设备像素,CSS像素和屏幕分辨率
    #define
  • 原文地址:https://www.cnblogs.com/kerrycode/p/2454507.html
Copyright © 2011-2022 走看看