oracle 登录认证--转

Posted hsjz-xinyuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 登录认证--转相关的知识,希望对你有一定的参考价值。

1 简介

Oracle登录认证有两种方式,基于操作系统的登录认证,基于oracle的密码验证。

ORACLE数据库通过sqlnet.ora文件中的参数sqlnet.authentication_services,来控制用户是通过操作系统认证还是通过密码认证进行登录。

而对于拥有sysdba角色的用户,还有一个密码文件可以辅助密码验证。

sqlnet.authentication_services、参数remote_login_passwordfile和密码文件pwd<sid>.ora三者协同作用实现身份认证.

2 authentication_services

Windows环境与Linux/Unix环境有区别:

Windows
  • SQLNET.AUTHENTICATION_SERVICES= (NTS)是基于操作系统验证;
  • SQLNET.AUTHENTICATION_SERVICES= (NONE)是基于Oracle验证;
  • SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)是二者共存。
  • SQLNET.AUTHENTICATION_SERVICES必须设置为NTS或者ALL才能使用OS认证;不设置或者设置为其他任何值都不能使用OS认证。
Linux/Unix
在linux下,在SQLNET.AUTHENTICATION_SERVICES的值设置为
  • ALL, 为OS验证;
  • NONE或者NTS,都是基于oracle密码验证的。
  • 不设置时,启用OS认证和oracle密码认证。

2.1 不同登录方式的写法

区分以下几种登录方式的区别
  • conn / as sysdba 本机登陆,使用操作系统认证,有无监听都可以
  • conn sys/password as sysdba 本机登陆,使用密码文件认证,有无监听都可以
  • conn sys/password@dbanote as sysdba 兼容OS认证与密码认证。使用密码文件认证,必须有监听,必须有tnsnames.ora,remote_login_passwordfile必须是EXCLUSIVE

3 sysdba角色登录认证

3.1 无密本地登录

sqlplus / as sysdba
或者
sqlplus / nolog
conn / as sysdba

以上写法都是无密本地登录。

3.2 密码文件

密码文件是保存拥有sysdba/sysoper等role 的用户和密码信息的文件 。当拥有相关role的用户,想要登录 数据库实例时,如果authentication_services 要求进行密码验证,那么这些用户的密码会通过密码文件加以校验。

创建密码文件的语法如下:

orapwd file=<密码文件> password=<sys用户密码> entries=10 force=y

说明:

  • file——密码文件名(必要)。默认在$Oracle_Home/dbs目录下
  • password——SYS 的密码(必要)
  • entries——DBA和操作员的最大数目(可选)
  • force——是否重写现有的文件(可选)
  • 创建密码文件时,= 号两边是没有空格的。

3.3 是否开启密码文件验证

Oracle提供了一个参数: remote_login_password=NONE|EXCLUSIVE|SHARED .

  • NONE 高级管理员登录时,不使用密码文件验证
  • EXCLUSIVE 高级管理员登录时,使用密码文件验证,且只允许本实例使用该密码文件。
  • shared 高级管理员登录时,使用密码文件验证,且允许多个实例使用该密码文件

3.4 限制sys登录方式

3.4.1 不限制

不设置sqlnet.authentication_services,不设置 remote_login_password. 此时,不管是无密登录 、密码登录还是远程登录都可以。

3.4.2 只允许本地密码登录

sqlnet.authentication_services=(ALL) 且 remote_login_password=exclusive 或者shared

3.4.3 只允许远程登录

sqlnet.authentication_services=(NTS) 且 remote_login_password=exclusive 或者shared

以上是关于oracle 登录认证--转的主要内容,如果未能解决你的问题,请参考以下文章

转:Redis使用认证密码登录

oracle用sql plus登陆不了,但是用pl sql可以登录,是啥原因?

[转]关于NTLM认证的.NET,php,python登录

单点登录(转)

Oracle的操作系统身份认证

(转)Shiro多Realm验证和认证策略