数据库用sysdba登录的验证有两种方式,一种是通过os认证,一种是通过密码
文件验证;登录方式有两种,一种是在数据库主机直接登录(用os认证的方式),
一种是通过网络远程登录;需要设置的参数有两个,一个是
SQLNET.AUTHENTICATION_SERVICES,一个是REMOTE_LOGIN_PASSWORDFILE。
os认证:如果启用了os认证,以sysdba登录,那么我们只要用oracle软件的安装
用户就能登录:
sqlplus “/ as sysdba”。
如果我们要禁用os认证,只利用密码文件登录,我们首先要有一个密码文件:
orapwd file=C:\oracle\product\9.2.0\db_1\database\PWDoralocal.ora
password=oracle;
然后我们要把$ORACLE_HOME/network/admin/sqlnet.ora中设置:
SQLNET.AUTHENTICATION_SERVICES= none
注意一下,密码文件只在数据库启动的时候加载进去,一旦加载进去,密码文件
就脱离了oracle管理,所以我们用orapwd新建密码文件后,里面指定的密码要在数
据重启后才能生效。
至此,我们已经实现不用os认证(sqlplus “/ as sysdba”的方式登录不了)
。那么我们怎么限制网络方面利用sysdba远程登录呢?我们可以设置初始化文件中
的REMOTE_LOGIN_PASSWORDFILE=none。
注意,当REMOTE_LOGIN_PASSWORDFILE=none时,这个参数生效需要重启数据库,并
且,一旦启用这个参数,将使用操作系统认证,不使用口令文件。因此如果
REMOTE_LOGIN_PASSWORDFILE=none且SQLNET.AUTHENTICATION_SERVICES= none这个
时候数据库是无法登录的。
(1)REMOTE_LOGIN_PASSWORDFILE=none且SQLNET.AUTHENTICATION_SERVICES=
none:
oracle安装用户本地sqlplus “/ as sysdba”无法登录
非oracle安装用户本机sqlplus “sys/change_on_install as sysdba”无法
登录
非oracle安装用户远程sqlplus as sysdba”
无法登录
(2)REMOTE_LOGIN_PASSWORDFILE=exclusive且
SQLNET.AUTHENTICATION_SERVICES= none:
oracle安装用户本地sqlplus “/ as sysdba”无法登录
非oracle安装用户本机sqlplus “sys/change_on_install as sysdba”能登
录
非oracle安装用户远程sqlplus as sysdba”
能登录
(3)REMOTE_LOGIN_PASSWORDFILE=none且SQLNET.AUTHENTICATION_SERVICES=
(NTS):
oracle安装用户本地sqlplus “/ as sysdba”能登录
非oracle安装用户本机sqlplus “sys/change_on_install as sysdba”无法
登录
非oracle安装用户远程sqlplus as sysdba”
无法登录
(4)REMOTE_LOGIN_PASSWORDFILE=exclusive且
SQLNET.AUTHENTICATION_SERVICES= (NTS):
oracle安装用户本地sqlplus “/ as sysdba”能登录
非oracle安装用户本机sqlplus “sys/change_on_install as sysdba”能登
录
非oracle安装用户远程sqlplus as sysdba”
阅读(1054) | 评论(0) | 转发(0) |