Chinaunix首页 | 论坛 | 博客
  • 博客访问: 143776
  • 博文数量: 161
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: -30
  • 用 户 组: 普通用户
  • 注册时间: 2017-09-21 21:45
文章分类
文章存档

2009年(1)

2008年(74)

2007年(48)

2006年(38)

我的朋友

分类:

2007-05-24 16:17:53

环境 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数据库通过 1) sqlnet.ora文件中的参数SQLNET.AUTHENTICATION_SERVICES 2) PFILE(或SPFILE)文件中的参数REMOTE_LOGIN_PASSWORDFILE 3) 口令文件PWDsid.ora 三者协同作用实现身份认证。 1) qlnet.ora文件中的参数SQLNET.AUTHENTICATION_SERVICES SQLNET.AUTHENTICATION_SERVICES=(NTS)|(NONE) SQLNET.AUTHENTICATION_SERVICES=(NTS): 操作系统认证方式,不使用口令文件 SQLNET.AUTHENTICATION_SERVICES=(NONE):口令文件认证方式 2) PFILE(或SPFILE)文件中的参数REMOTE_LOGIN_PASSWORDFILE 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用户下所能执行的操作。 NONE:Oracle ignores any password file. Therefore, privileged users must be authenticated by the operating system. SHARED:More than one database can use a password file. However, the only user recognized by the password file is SYS. EXCLUSIVE:The password file can be used by only one database and the password file can contain names other than SYS
阅读(1189) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~