1.首先确定初始化参数os_authent_prefix的值,默认为ops$

SQL> show parameter os_authent_prefix
NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
os_authent_prefix     string ops$

2.如果需要允许远程操作系统用户验证的话,还需修改remote_os_authent参数值,默认False。
Oracle不推荐在远程客户端上使用操作系统验证,因为客户端验证时不是通过服务器上的操作系统用户来验证,而是使用客户端自己怕操作系统来进行windows验证,这样,客户端可以采用建立对应的windows机器名和用户名的方式来欺骗Oracle的操作系统验证。另外启用此参数后,在启动实例时会提示 ORA-32004错误,表示启用了不正确的初始化参数,建议禁用此参数。
SQL> show parameter remote_os_authent
NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_os_authent     boolean TRUE

3.另外一个相关远程登录的参数 remote_login_passwordfile,使用默认值EXCLUSIVE即可。
查看是否允许远程登录使用口令文件进行身份验证
    ? SHARED 一个或多个数据库可以使用口令文件。可以包含 SYS 或者非 SYS 的口令文件。
    ? EXCLUSIVE 新版本和 SHARED 功能一致。
    ? NONE 不允许远程使用口令文件验证,如远程用 SYS 账号连接 Oracle 将会报错。
SQL> show parameter remote_login_passwordfile
NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile     string EXCLUSIVE

4.配置SQLNET.ORA文件,确保 sqlnet.authentication_services= (NTS)有此认证方式
参数names.directory_path= (TNSNAMES,ONAMES,HOSTNAME)  默认值:TNSNAMES,ONAMES,HOSTNAME
表明解析客户端连接时所用的主机字符串的方式
    TNSNAMES表示采用TNSNAMES.ORA文件来解析
    ONAMES表示Oracle使用自己的名称服务器(Oracle Name Server)来解析,目前Oracle建议使用轻量目录访问协议LDAP来取代ONAMES
    HOSTNAME表示使用host文件,DNS,NIS等来解析
参数sqlnet.authentication_services= (NONE,NTS)  默认值:NONE
    表明用户连接Oracle服务器时使用哪种验证方式,两种方式可并用
    ? NONE:作用是不允许通过 OS 系统用户登录数据库,需要提供用户名及密码
    ? ALL:作用是允许所有的登录方式
    ? NTS:作用是允许本地操作系统用户认证

5.建立windows的用户,隶属Users组,步骤略

6.启动 sql*plus,以sys身份登录oracle

7.以外部验证方式创建用户ops$edward
SQL> create user ops$edward identified by externally;
User created.

8.授权ops$edward相应权限
SQL> grant connect,resource to ops$edward;
Grant succeeded.

9.切换到windows上,以edward用户登录windows,且打开 sql*plus连接并测试是否能成功登录
在Windows下Oracle11g中使用外部操作系统用户验证-LMLPHP





 




10-04 02:14