Oracle 数据库的OS认证就是不输入数据库的用户名和密码,直接使用操作系统的验证来登录数据库。
在Windows Server平台下默认没有启用OS认证:
C:/Users/Administrator>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on 星期三 2月 8 18:36:05 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
请输入用户名:
ERROR:
ORA-01017: 用户名/口令无效; 登录被拒绝
请输入用户名:
ERROR:
ORA-01017: 用户名/口令无效; 登录被拒绝
SP2-0157: 在 3 次尝试之后无法连接到 ORACLE, 退出 SQL*Plus
修改OS认证的配置文件:sqlnet.ora
讲SQLNET.AUTHENTICATION_SERVICES= (NONE) 改成 SQLNET.AUTHENTICATION_SERVICES= (NTS) 即可。
实际上该属性可以改成ALL,NTS,NONE,或者为空,它们之间的区别如下:
SQLNET.AUTHENTICATION_SERVICES = (ALL)
对Linux系统,支持OS认证和口令文件认证。
对Windows系统,实际实验是不支持此参数,验证失败。
SQLNET.AUTHENTICATION_SERVICES = (NTS)
此设置值仅用于Windows NT系统,此设置同时支持OS认证和口令文件认证,只有在设置了(NTS)值之后运行在Windows系统上的Oracle才支持OS认证。
SQLNET.AUTHENTICATION_SERVICES = (NONE)
此设置值在Windows和Linux是作用一样的,指定Oracle只使用口令文件认证。
不设置此参数或SQLNET.AUTHENTICATION_SERVICES =
对Linux系统,默认支持OS认证和口令文件认证。
对Windows系统,默认只支持口令文件认证,不支持OS认证。
如果在Windows 系统中改成ALL,那么连接的时候会报如下错误:
C:/Users/Administrator>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on 星期三 2月 8 18:37:00 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-12641: 验证服务无法初始化
改成NTS即可正常连接:
C:/Users/Administrator>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on 星期三 2月 8 18:47:09 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
注意修改此参数,不需要重建监听,修改完立即生效。
版权声明:本文为博主原创文章,未经博主允许不得转载。