SQLNET.AUTHENTICATION_SERVICES 参数

最近在客户那边实施DG时,通过sqlplus sys/oracle as sysdba 连接数据库是成功的,但是通过RMAN TARGET sys/oracle 连接总是报 ORA-01017: invalid username/password; logon denied 的错。
后来通过PL/SQL DEVELOPER 确定sys用户的密码是错的。最后由于客户也忘记了sys密码,通过重置密码后完成后续操作。
问题:为什么通过 sqlplus sys/oracle as sysdba 在操作系统上是可以连接数据库呢?
答: 当使用 sqlplus xxx/xxx as sysdba方式登录数据库时,采用了操作系统的认证方式,任意的用户名密码都能够登录,且登录帐号为SYS。
这种情况只针对拥有SYSDBA 权限的用户,其他的用户都是需要用户名和密码才能登录。
$ORACLE_HOME/network/admin 目录下的 sqlnet.ora 文件中 SQLNET.AUTHENTICATION_SERVICES 参数来控制是使用操作系统验证还是Oracle密码文件认证。

SQLNET.AUTHENTICATION_SERVICES 参数有一下常用的几个值:
ALL : 所有认证方式(默认值)
NONE: 基于Oracle密码文件认证  
NTS : Windows 环境下基于操作系统方式验证

其他验证方式: 
beq : for native operating system authentication for operating systems other than Microsoft Windows(Windows环境以外其他操作系统的本地操作系统认证方式)
kerberos5 : for Kerberos authentication
radius : for Remote Authentication Dial-In User Service (RADIUS) authentication
tcps : for SSL authentication

说明: 
在 Unix/Linux下,默认情况下sqlnet.ora 文件中是没有 SQLNET.AUTHENTICATION_SERVICES 参数的,此时是操作系统验证和Oracle密码验证并存。
在加上SQLNET.AUTHENTICATION_SERVICES这个参数后,无论是设置为(NONE)、(NTS)或(NONE,NTS),都是基于Oracle密码验证。

在windows下,SQLNET.AUTHENTICATION_SERVICES 必须设置为NTS才能使用OS认证。
主要是以下几种情况:
1. sqlnet.ora文件为空,或用#注释掉 --基于Oracle密码文件验证
2. SQLNET.AUTHENTICATION_SERVICES = (NTS) --基于操作系统验证
3. SQLNET.AUTHENTICATION_SERVICES = (NONE) --基于Oracle密码文件验证
4. SQLNET.AUTHENTICATION_SERVICES = (NONE,NTS) --基于操作系统验证(前后顺序颠倒也一样)
注意: 当 SQLNET.AUTHENTICATION_SERVICES = (NONE) 后,当使用RMAN时,system用户就不能操作了,输入正确的密码也不行,只有sys用户并输入密码才可以。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29152977/viewspace-2140693/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29152977/viewspace-2140693/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值