背景说明:在windodws平台上面的一台数据库通过sqlplus / as sysdba的方式登录的的时候报ORA-01031:权限不足的错误。$ORACLE_HOME/network/admin/sqlnet.ora,SQLNET.AUTHENTICATION_SERVICES = (None),把这个修改成SQLNET.AUTHENTICATION_SERVICES = (NTS)即可;
以下SQLNET.AUTHENTICATION_SERVICES的参数说明,来自ORACLE11G的联机文档
PurposeTo enable one or more authentication services. If authentication has been installed, then it is recommended that this parameter be set to either none or to one of the authentication methods.
提供多种验证的方法:通过操作系统、数据库等
DefaultNone 默认值是None值
备注:When installing the database with Database Configuration Assistant (DBCA), this parameter may be set to nts in the sqlnet.ora file.
(当通过DBCA创建数据库的时候,sqlnet.ora默认值就是NTS)
Values:Authentication Methods Available with Oracle Net Servicesnone for no authentication methods, including Microsoft Windows native operating system authentication. WhenSQLNET.AUTHENTICATION_SERVICES is set to none, a valid user name and password can be used to access the database.(设置成NONE值时,关闭操作系统的验证方法,需要通过用户和密码才能登录;
all for all authentication methods.
nts for Microsoft Windows native operating system authentication. 这个参数只在WIND平台有效
Authentication Methods Available with Oracle Advanced Security(其他验证的方法,可以通过购买ORACLE其他的软件去实现):
kerberos5 for Kerberos authentication.
radius for RADIUS authentication.tcps for SSL authentication.
以下是在测试时候的个人总结:
1、在windows下,SQLNET.AUTHENTICATION_SERVICES必须设置为NTS或者ALL才能使用OS认证;不设置或者设置为其他任何值都不能使用OS认证。2、在linux下,在SQLNET.AUTHENTICATION_SERVICES的值设置为ALL,或者不设置的情况下,OS验证才能成功;设置为 其他任何值都不能使用OS认证。
3.客户端和服务器SQLNET.AUTHENTICATION_SERVICES的值不能同时设置为ALL,否则会报错。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
本文作者:JOHN
ORACLE技术博客:ORACLE 猎人笔记 数据库技术群:367875324 (请备注ORACLE管理 )
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++