一.测试环境
1.1数据库服务端: 操作系统:redhat linux 5.0 数据库版本:oracle 10g 实例名称:orcl
1.2客户端: 操作系统:windowsxp 数据库客户端:oracle10g客户端
二.服务端参数配置和准备
2.1首先是remote_os_authent参数
SQL> show parameter remote_os_authent;
NAME TYPE VALUE ------------------------------------ ----------- --------------
---------------- remote_os_authent boolean TRUE SQL> 必须要值为TRUE,如果不是要用命令alter system set remote_os_authent=true scope=spfile;来修改,而且得重启数据库;因为这样才允许客户机来通过系统来认证连接。
2.2sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES的值
因为SQLNET.AUTHENTICATION_SERVICES的值是用来对本地用户的系统方式
认证的条件的,而对客户端是没有任何影响的,所以这里不需要去设置这个值,
不管有没有这个参数,不管这个参数是多少,都不影响我们客户端连接。这个
我做过测试,确实是这样的,至于SQLNET.AUTHENTICATION_SERVICES这个值怎
么设置才可以让本地用户系统认证通过,网友可以自己去网上查询,有很多资料。
2.3注意参数os_authent_prefix的值,如果os_authent_prefix有值 ,不为null,则创建用户时也要加上os_authent_prefix的前缀 SQL> show parameter os_authent_prefix;
NAME TYPE VALUE ------------------------------------ ----------- --------------
---------------- os_authent_prefix string ops$ SQL>
2.4在客户端确认查看操作系统用户名;
C:\Documents and Settings\jacky>set username USERNAME=jacky
所以在oracle数据库里必须创建一个OPS$+系统用户名的数据库用户名。
2.5创建外部用户
SQL> create user ops$jacky identified by externally;
用户已创建。
SQL> grant dba to ops$jacky;
授权成功。
SQL> select username from dba_users where username='OPS$JACKY';
USERNAME ------------------------------ OPS$JACKY
SQL>
2.6然后在客户端以jacky用户登录系统,然后在sqlplus中登录尝试;
SQL> conn /@orcl; 已连接。 SQL> show user; USER 为 "OPS$JACKY"
SQL> select * from user_role_privs;
USERNAME GRANTED_ROLE ADM DEF OS_ ------------------------------ ------------------------------ --- --- --- OPS$JACKY DBA NO YES NO
SQL>
这样就完成了不需要密码就可以远程通过系统认证连接到数据了。 网友如果看完我的文章,觉得我有问题,可以提出来,大家共同探讨!
|