1 SQLNET.AUTHENTICATION_SERVICES配置
SQLNET.AUTHENTICATION_SERVICES=(NTS)|(NONE)
SQLNET.AUTHENTICATION_SERVICES=(NTS): 操作系统认证方式,不使用口令文件
SQLNET.AUTHENTICATION_SERVICES=(NONE) : 口令文件认证方式
2 REMOTE_LOGIN_PASSWORDFILE参数
REMOTE_LOGIN_PASSWORDFILE=(NONE)|(EXCLUSIVE)|(SHARED)
REMOTE_LOGIN_PASSWORDFILE=(NONE): 不使用口令文件,操作系统认证
REMOTE_LOGIN_PASSWORDFILE=(EXCLUSIVE): 口令文件认证方式,但只有一个数据库实例可以使用此文件,系统允许将SYSOPER/SYSDBA授予除INTERNAL/SYS以外的其他用户,且以具有这类身份的其他用户登录是有效的
REMOTE_LOGIN_PASSWORDFILE=(SHARED): 口令文件认证方式,可有多个数据库实例使用此文件,但是此设置下只有INTERNAL/SYS帐号能被识别,即使文件中存有其他用户的信息,也不允许他们以SYSOPER/SYSDBA登录
3 两者关系
本地:
方式一: 本地oracle安装用户 sqlplus / as sysdba
方式二: 本地oracle安装用户 sqlplus sys/sys as sysdba
方式三: 本地oracle安装用户 sqlplus sys/sys@linuxtest as sysdba
远程:
方式四: 远程的用户 sqlplus "sys/sys@linuxtest as sysdba"
方式五: 远程的用户 sqlplus "sys/[email protected]:1521/test as sysdba"
其中:
密码是sys
tns的服务名是linuxtest
sid是test
REMOTE_LOGIN_PASSWORDFILE |
SQLNET.AUTHENTICATION_SERVICES |
用户类型 |
登陆结果 |
none |
none |
方式一 |
无法登录 |
方式二 |
无法登录 |
||
方式三 |
无法登录 |
||
方式四 |
无法登录 |
||
方式五 |
无法登录 |
||
none |
nts(all) |
方式一 |
能登录 |
方式二 |
能登录 |
||
方式三 |
能登录(window) 能登录(linux置空) 不能登录(linux设all) |
||
方式四 |
无法登录 |
||
方式五 |
无法登录 |
||
exclusive |
none |
方式一 |
无法登录 |
方式二 |
能登录 |
||
方式三 |
能登录 |
||
方式四 |
能登录 |
||
方式五 |
能登录 |
||
exclusive |
nts(all) |
方式一 |
能登录 |
方式二 |
能登录 |
||
方式三 |
能登录(window) 能登录(linux置空) 不能登录(linux设all, 但是远程用密码文件又可以) |
||
方式四 |
能登录 |
||
方式五 |
能登录 |
1 常见情况举例
1.1 关闭OS验证
SQLNET.AUTHENTICATION_SERVICES=(NONE)
1.2 关闭密码文件认证
REMOTE_LOGIN_PASSWORDFILE=(NONE)
1.3 关闭本地密码文件认证
REMOTE_LOGIN_PASSWORDFILE=(EXCLUSIVE)
SQLNET.AUTHENTICATION_SERVICES=(ALL)
1.4 关闭远程密码文件认证
REMOTE_LOGIN_PASSWORDFILE=(NONE)