ITPub博客

首页 > Linux操作系统 > Linux操作系统 > remote_login_passwordfile与sqlnet.authentication_service的应用

remote_login_passwordfile与sqlnet.authentication_service的应用

原创 Linux操作系统 作者:ballontt 时间:2012-10-26 00:35:36 0 删除 编辑
最近刚刚接触oracle,对于oracle中的很多参数并不太清楚,今天经过一晚上的攻坚与实验,终于弄清楚了这两个参数的作用。
(一)remote_login_passwordfile

      remote_login_passwordfile=none|shared|exclusive
     remote_login_passwordfile可取的参数值就是这三个,这个参数主要作用在口令文件上。

 REMOTE_LOGIN_PASSWORDFILE=(NONE): 不使用口令文件

 REMOTE_LOGIN_PASSWORDFILE=(EXCLUSIVE): 口令文件认证方式,但只有一个数据库实例可以使用此文件,系统允许将SYSOPER/SYSDBA授予除INTERNAL/SYS以外的其他用户,且以具有这类身份的其他用户登录是有效的

REMOTE_LOGIN_PASSWORDFILE=(SHARED): 口令文件认证方式,可有多个数据库实例使用此文件,但是此设置下只有INTERNAL/SYS帐号能被识别,即使文件中存有其他用户的信息,也不允许他们以SYSOPER/SYSDBA登录


这样,根据这个定义,我们便可以衍生出如下论断:

因为,在远程客户端连接数据库时,sys用户无法像在服务器上一样使用OS认证,而只能用口令文件认证,如果,我们对参数remote_login_passwordfile进行如上none设置,便禁用了远程的以as sysdba的身份登录,如果数据库关闭,参数又设置了none,那远程就没有办法登录了,因为既无法读取数据库内的密码信息,又无法通过口令文件登录。

如果本地的OS认证关闭了,sys用户可以口令文件认证登录,但如果参数设置了NONE,那就没法在登录以登录了。(注意,普通用户在数据库开启的情况下应该是不受影响的,没验证)

1)当取值为EXCLUSIVE时
   允许客户端以SYSDBA或SYSOPER权限登录到数据库实例中完成数据库管理操作;
   允许授予和回收SYSDBA或SYSOPER权限。

  2
)当取值为NONE时
  禁止客户端以SYSDBA或SYSOPER权限登录到数据库实例中完成数据库管理操作;
  禁止授予和回收SYSDBA或SYSOPER权限。

  3
)当取值为SHARED时
  允许客户端以SYSDBA或SYSOPER权限登录到数据库实例中完成数据库管理操作;
  禁止授予和回收SYSDBA或SYSOPER权限。


修改此参数alter system set remote_login_passwordfile=exclusive scope=spfile

静态参数的修改,然后重启数据库有效


(二)SQLNET.AUTHENTICATION_SERVICES配置

SQLNET.AUTHENTICATION_SERVICES=(NTS)|(NONE)

SQLNET.AUTHENTICATION_SERVICES=(NTS): 操作系统认证方式,不使用口令文件

SQLNET.AUTHENTICATION_SERVICES=(NONE) : 口令文件认证方式


    SQLNET.AUTHENTICATION_SERVICES=(NTS)是WINDOWS系统专用的,对linux/UNIX是不适用的。

可以通过改变sqlnet.ora文件,可以修改oracle登录认证方式:

经过测试,以上规则只适用于windows服务器,在linux下规则如下:

默认情况下linux下的oracle数据库sqlnet.ora文件没有SQLNET.AUTHENTICATION_SERVICES参数,此时是基于操作系统认证和oracle密码验证共存的,加上SQLNET.AUTHENTICATION_SERVICES参数后,不管SQLNET.AUTHENTICATION_SERVICES设置为NONE或者NTS,都是基于oracle密码验证的,设置为all或是省略不写,则为OS认证。在linux中,此文件一般位于$ORACLE_HOME/network/admin/sqlnet.ora


(三)两者的关系

这两个参数的混合使用,对用户的登录方式产生了一些限制


本地:

方式一: 本地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/sys@192.168.128.2:1521/test as sysdba"

 

其中:

密码是sys

tns的服务名是linuxtest

sid是test



弄清楚了这些概念之后,我们在下一篇来紧紧的结合OS认证 、口令认证的登录方式。
至于说,远程能不能以操作系统认证的方式登录呢?
如果使用oracle的远程客户端,PL/SQL,TOAD,一般来讲是没有办法使用操作系统认证远程登录。也没有必要。
但是,通过一定的方法也可以实现。

未命名去.jpg

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

请登录后发表评论 登录
全部评论

注册时间:2012-08-06

  • 博文量
    28
  • 访问量
    118703