oracle登录时的身份验证

环境:windows 7     Oracle 10g


使用

sqlplus /nolog     --即no logging

登录oracle之后,conn / as sysdba显示结果:已连接到空闲例程。此时实例未启动,数据库未装载和打开,不能操作sql语句。用startup启动实例之后才会装载数据库。在cmd界面使用lsnrctl status命令可以看到,此时服务“PLSExtProc”会包含一个例程PLSExtProc,状态为unknown。

 

sqlplus /nolog,conn /as sysdba 之所以能够登录,在于oracle登录时的身份认证方式。oracle登录时有os认证和口令文件认证两种方式。
1、os认证和口令文件认证其实质是对oracle数据库采取何种管理方式,是本地管理还是通过一台管理服务器统一管理。
本地管理采用的就是os认证方式,统一管理采用的就是口令文件认证方式 。
2.oracle数据库通过sqlnet.ora文件中的参数SQLNET.AUTHENTICATION_SERVICES,PFILE(或SPFILE)文件中的参数
REMOTE_LOGIN_PASSWORDFILE和口令文件PWDsid.ora三者协同作用实现身份认证。
SQLNET.AUTHENTICATION_SERVICES=(NTS)|(NONE) 
SQLNET.AUTHENTICATION_SERVICES=(NTS): 操作系统认证方式,不使用口令文件 
SQLNET.AUTHENTICATION_SERVICES=(NONE):口令文件认证方式 

REMOTE_LOGIN_PASSWORDFILE=(NONE)|(EXCLUSIVE)|(SHARED) 
REMOTE_LOGIN_PASSWORDFILE=(NONE):不使用口令文件,操作系统认证 
REMOTE_LOGIN_PASSWORDFILE=(EXCLUSIVE):口令文件认证方式,但只有一个数据库实例可以使用此文件, 
系统允许将SYSOPER/SYSDBA授予除INTERNAL/SYS以外的其他用户,且以具有这类身份的其他用户登录是有效的 
REMOTE_LOGIN_PASSWORDFILE=(SHARED):口令文件认证方式,可有多个数据库实例使用此文件,但是此设置下 
只有INTERNAL/SYS帐号能被识别,即使文件中存有其他用户的信息,也不允许他们以SYSOPER/SYSDBA登录 

1)SQLNET.AUTHENTICATION_SERVICES=(NTS)同时REMOTE_LOGIN_PASSWORDFILE=(NONE),此时为操作系统认证方式。 
当以oracle_dba组下的用户登录进入本地windows2000后进行下边的操作: 
sqlplus /nolog 
sql>conn /as sysdba 
或 
sqlplus /nolog 
sql>conn 任意用户名/密码 as sysdba 
均可以sysdba身份登录成功,进行数据库方面的操作 
当以远程进行登录时,执行 
sqlplus /nolog 
sql>conn /as sysdba 
或 
sqlplus /nolog 
sql>conn sys/密码 as sysdba 
均显示 
“ERROR: 
ORA-01031: insufficient privileges 
” 
也就是不允许以sysdba身份远程登录系统,这也是os认证之所以也称为本地认证方式的原因 
可以这么理解:
你当前电脑开机时登录的用户,也就是进入操作系统的用户,例如是gooooal,它在你电脑的ora_dba组中。
可以运行lusrmgr.msc,发现有一个组叫“ora_dba”,双击它,看到成员列表中有“gooooal”。
    也就是在conn /as sysdba,oracle会进行操作系统验证,发现你当前登录的用户就属于ora_dba组,因此才可以登录成功。
    你可以把ora_dba组中的“gooooal”用户删除,再conn /as sysdba,就发现进不去了。

2)SQLNET.AUTHENTICATION_SERVICES=(NONE)同时REMOTE_LOGIN_PASSWORDFILE=(EXCLUSIVE)或(SHARED),配合口令文件 
PWDsid.ora,此时为口令文件认证方式 
当在本地以oracle_dba组下的用户登录进入windows2000后进行下边的操作: 
sqlplus /nolog 
sql>conn /as sysdba 
显示 
“ERROR: 
ORA-01031: insufficient privileges 
” 
实质上是要求提供拥有sysdba身份的用户名和密码 
在本地或远程进行下边的操作 
sqlplus "sys/密码@服务名 as sysdba" 
可进入系统 
也就是说口令文件认证方式允许用户从本地或远程以sysdba身份登录,但必须提供口令字 

3)SQLNET.AUTHENTICATION_SERVICES=(NTS)同时REMOTE_LOGIN_PASSWORDFILE=(EXCLUSIVE)或(SHARED),
配合口令文件PWDsid.ora,此时操作系统认证和口令文件认证同时起作用 
当在本地以oracle_dba组下的用户登录进入windows2000后进行下边的操作: 
sqlplus /nolog 
sql>conn /as sysdba 
可进入系统 
当在远程执行 
sqlplus "sys/密码@服务名 as sysdba" 
同样可正常登录到数据库系统上 
从前边的讨论可以知道,我们能够对sys以外的用户赋予sysdba身份,具体方法就是 
SQLNET.AUTHENTICATION_SERVICES=(NONE) 
REMOTE_LOGIN_PASSWORDFILE=(EXCLUSIVE) 
口令文件PWDsid.ora 
SQL>grant sysdba to 用户名 
这样,其他具有sysdba身份的用户就加入到PWDsid.ora中,并可以被PWDsid.ora识别,
我们可以用这个被赋予sysdba身份的用户登录并进行类似sys用户下所能执行的操作。

 



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值