大话人生

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  299 随笔 :: 0 文章 :: 73 评论 :: 0 Trackbacks

关于oracle os认证和口令文件认证的简要解析

环境 
windows2000+sp4,oracle9.201 
oracle软件以oracle帐户安装 

一、sysdba的权限 
sysdba(sysoper和normal)是登录数据库的身份,与角色(dba、resource)、对象权限及系统权限有所区别,登录身份表明了可对数据库的整体进行哪些操作,sysdba有些类似unix下的root帐户。 
sysdba的权限或可对数据库进行的操作: 
startup,shutdown 
alter database open|mount 
alter database backup controlfile 
alter tablespace begin/end backup 
recover database 
alter database archivelog,restricted session 
create database 
recover database until 

二、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认证之所以也称为本地认证方式的原因 
 
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用户下所能执行的操作。

 

 

补充:2008-12-31

首先将oracle改为口令认证模式;

sqlnet.ora路径C:\oracle\ora92\network\admin

SQL> conn sys/allview@allview as sysdba;
已连接。
SQL> alter user sys identified by sys;

用户已更改。

//首先确认新口令为sys  更改sys口令后可能需要重启服务

 

D:\Documents and Settings\LMing>sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 12月 31 10:58:39 2008

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

SQL> conn sys/sys@allview as sysdba;
已连接。
SQL> exit

//验证效果通过

 

D:\Documents and Settings\LMing>move C:\oracle\ora92\database\PWDAllView.ora C:\
oracle\ora92\database\PWDAV.ora

D:\Documents and Settings\LMing>sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 12月 31 11:05:00 2008

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

SQL> conn sys/sys@allview as sysdba;
ERROR:
ORA-01031: insufficient privileges

//由于口令文件被修改而无法登陆
SQL> exit

D:\Documents and Settings\LMing>orapwd file=C:\oracle\ora92\database\PWDAllView.
ora password=allview entries=4;

D:\Documents and Settings\LMing>sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 12月 31 11:07:14 2008

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

SQL> conn sys/allview@allview as sysdba;
ERROR:
ORA-01031: insufficient privileges

//重新创建密码文件后需要重启服务后生效
SQL> shutdown immediate;
ORA-01012: not logged on
SQL> exit

D:\Documents and Settings\LMing>sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 12月 31 11:08:27 2008

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

SQL> conn sys/allview@allview as sysdba;
已连接。

//测试成功

posted on 2010-03-29 18:07 大话人生 阅读(284) 评论(0)  编辑 收藏 引用 所属分类: 数据库
只有注册用户登录后才能发表评论。