2、Windows操作系统下如何实现使用操作系统登录模式
首先在Windows环境下安装Oracle数据库的时候,请使用administrator用户登录操作系统进行操作;
我们需要在$oracle_home(oracle安装主目录下)的\NETWORK\ADMIN目录下找到sqlnet.ora的文件,例如我本机的路径是:
E:\app\neusoft\product\11.2.0\dbhome_1\NETWORK\ADMIN\sqlnet.ora
?
该文件的内容摘要如下:
# sqlnet.oraNetwork Configuration File:E:\app\neusoft\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
#Generated by Oracle configuration tools.
?
# Thisfile is actually generated by netca. But if customers choose to
# install"Software Only", this file wont exist and without the native
#authentication, they will not be able to connect to the database on NT.
?
AUTHENTICATION_SERVICES= (NTS)
?
DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
内容中#代表注释的含义,注释的翻译是
Sqlnet.ora的配置路径是:E:\app\neusoft\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
这个文件是由配置工具自动生成的
这个文件实际是由netca(NetConfiguration Assistant)生成。但用户在安装时如果选择“仅安装数据库软件”,则这个文件就不会产生
如果想用操作系统验证方式实现登录oracle,则需要做如下设置:SQLNET.AUTHENTICATION_SERVICES= (NTS)
将REMOTE_LOGIN_PASSWORDFILE=NONE,remote_login_passwordfile翻译就是远程登录密码文件,这个参数默认值是exclusive,即排他、独占;
设置语句:SQL> alter system set remote_login_passwordfile=none scope=spfile;
需要制定范围是spfile,语句提交完成后需要重启数据库实例才能生效。
3、unix操作系统下如何实现使用操作系统登录模式
首先sqlnet.ora文件中将SQLNET.AUTHENTICATION_SERVICES=(beq),说明如果这个文件不存在,可以手工创建。其次和windows操作系统一样,
使用SQL>alter system set remote_login_passwordfile=none scope=spfile;将remote_login_passwordfile设置成none
三、口令认证概述及实现方式
1、首先sqlnet.ora文件中修改SQLNET.AUTHENTICATION_SERVICES=(none)
2、sqlplus中执行showparameter remote_login_passwordfile,查看值是否是EXCLUSIVE或SHARED;
3、如果参数remote_login_passwordfile的值为空或NONE,则需要使用语句SQL>alter system set remote_login_passwordfile=EXCLUSIVE scope=spfile; 重启实例生效;
4、使用owdpwd命令语句生成密码文件,其中file要求为安装数据库主目录($oracle_home)下的database文件夹,文件名如果实在unix操作系统环境下则必须以orapw开头+数据库实例名,
如果操作系统为windows环境下,则应该为PWD+数据库实例名.ora,password为给sys用户指定的登录密码,entries为选填项,指拥有sysdba/sysoper权限的用户的最大数量;
格式举例如下:
?orapwd file=E:\app\neusoft\product\11.2.0\dbhome_1\database\orapworclpassword=neusoft entries=5;
5、检查v$pwfile_users视图查看数据库中拥有SYSDBA/SYSOPER权限的用户列表;
6、我们可以使用授权语句将sysdba、sysoper权限赋给任意指定用户:
? ? GRANT sysdba,sysoper TO system;
? ? SELECT* FROM V$PWFILE_USERS;