分析REMOTE_LOGIN_PASSWORDFILE参数与SQLNET.AUTHENTICATION_SERVICES配置

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)

你可能感兴趣的:(Oracle)