sqlplus / as sysdba报错ORA-01017: invalid username/password; logon denied

客户现场,有开发人员问我,他使用系统认证没有用密码登陆Oracle数据库,报错,提示用户名和密码无效,很疑惑,问我为什么他使用系统认证会报错。我登陆他的系统后,首先看他的系统认证是否是打开的,果然发现他的系统是关闭是操作系统认证功能的,打开后问题解决。现在总结一下Oracle的密码文件及操作系统认证知识点。

一、密码文件

    作用:主要进行dba权限的认证。

    位置:

            Linux下的存放位置:$ORACLE_HOME/dbs/orapw$ORACLE_SID

            即:ORACLE_HOME/dbs/orapw

二、是否操作系统认证

    决定在两个参数中

    1、remote_remote_login_passwordfile

        位于$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora参数文件中。

        none:关闭密码文件认证。

        exclusive:打开密码文件认证,自己独占使用(默认值)。

        shared:要密码文件认证,不同实例的dba用户可以共享密码文件。

    2、SQLNET.AUTHENTICATION_SERVICES

        位于$ORACLE_HOME/network/admin/sqlnet.ora 。

        none:关闭操作系统认证,只能密码认证。

        all:Linux和AIX系统,打开操作系统认证,关闭密码文件认证,但远程需要密码文件认证。

        nts:用于Windows平台打开操作系统认证。

三、测试

    1、在sqlnet.ora中追加SQLNET.AUTHENTICATION_SERVICES = none,尝试dba免密登陆。

       [ora122@enmodb1 admin]$ sqlplus / as sysdba
    SQL*Plus: Release 12.2.0.1.0 Production on Fri Mar 1 23:49:34 2019
    Copyright (c) 1982, 2016, Oracle.  All rights reserved.
    ERROR:
    ORA-01017: invalid username/password; logon denied
  
    Enter user-name: 
    ERROR:
    ORA-01017: invalid username/password; logon denied

    2、将 SQLNET.AUTHENTICATION_SERVICES =all,再次尝试dba用户免密登陆。

        [ora122@enmodb1 admin]$ sqlplus / as sysdba
        SQL*Plus: Release 12.2.0.1.0 Production on Fri Mar 1 23:52:25 2019
        Copyright (c) 1982, 2016, Oracle.  All rights reserved.
        Connected to:
        Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
        SYS@ora122>

        或者注释掉也可以,默认是采用操作系统认证的。


请使用浏览器的分享功能分享到微信等