首页  ·  知识 ·  数据库
关于OracleEBS的权限管理浅析
网友  收集    编辑:德仔   图片来源:网络
一.权限分类: 功能权限和组织权限。 二.组织结
一.权限分类:
     功能权限和组织权限。

二.组织结构:
     Oralce ERP的组织结构的定义在HR模块完成(没有装HR的话,也可以在库存模块设定)。
     共分为如下几个层级:
     BG(分隔HR信息)
     SOB
     LE(基本没什么用)
     OU
     INV

     对于每一个Responsibility,我们都需要去设置一些职责层参数:
     HR:User Type
     HR:Security Group
     HR:Business Group
     Set Of  Books
     MO:Operating Unit
     这些参数可以有选择的设置,反正对于库存组织和OU的职责,上述参数都要设置。
     对于库存组织的还要设置对库存的访问控制,在Organization Access中设置,如果这个BG下的某个库存组织没有设置到对应哪个职责,则这个库存组织也会同样出现让我们进行选择。

    如上大致就是对组织权限的划分。
    说明一点:组织权限是对应职责而言,也就是一个角色的概念。

三.功能权限:
    功能权限其实很简单:
    a.Form的权限:
       通过Menu赋给职责设置来完成。
    b.Request的权限:
       通过Request Group赋给职责设置来完成,在Request中会用到一些参数,如当前的ORG及用户等等信息都是可以通过当前登陆的职责的参数获得。

如上,就是Oracle ERP大致的权限划分。

最后补充一点:在写具体Form的时候,其实我们都已经知道这个Form会用在哪个组织层级上,这样在写程序的时候就会考虑去哪取这些参数,是不是要强制先取等等行为。
 
Oracle中超级用户权限的管理


Oracle 的用户根据所被授予的权限分为系统权限和对象权限,系统权限经常被包含在角色中授予,新建一个用户时,默认只有connect角色,connect角色中包含了create session等8个系统权限,拥有create session权限是连接数据库的必要条件,如果想用Enterprise Manager console 连接的话,还必须拥有select any dictionary 权限。在所有权限中,最高的权限是sysdba。 Sysdba具有控制Oracle一切行为的特权,诸如创建、启动、关闭、恢复数据库,使数据库归档/非归档,备份表空间等关键性的动作只能通过具有 sysdba权限的用户来执行。这些任务即使是普通DBA角色也不行。Sysoper是一个与sysdba相似的权限,只不过比sysdba少了 SYSOPER privileges WITH ADMIN OPTION,CREATE DATABASE,RECOVER DATABASE UNTIL这几个权限而已。这两者的认证方式是相同的办法,所以下面只介绍sysdba的认证管理。  
  
  对于用户的身份验证有三种方式:密码验证;外部验证(操作系统验证),全局验证。密码验证是最常见的一种方式,即将用户信息码存储在数据目录里。对 sysdba的认证方式有两种:操作系统认证和密码文件认证。具体选择那一种认证方式取决于:你是想在Oracle运行的机器上维护数据库,还是在一台机器上管理分布于不同机器上的所有的Oracle数据库。若选择在本机维护数据库,则选择操作系统认证可能是一个简单易行的办法;若有好多数据库,想进行集中管理,则可以选择password文件认证方式。  

  如果使用操作系统认证方式的话,那数据库服务器的操作系统的密码将是非常重要的,如果这个密码外泄,那么入侵者可以轻松地以 conn /as sysdba连接到数据库,并具有至高权限!操作系统认证方式的配置过程如下:  
  1.在操作系统中建立一个合法帐户。  
  具体来说,在NT上,首先建立一个本地用户组,取名为ORA_<SID>_DBA,其中SID为该数据库实例的SID,或者建立一个 ORA_DBA地组,该组不对应于任何一个单独的Oracle实例。这样当一个NT上有好几个Oracle实例时,不用分别管理。然后再NT上建立一个用户,并且把它归入该组中。但是实际上这两步在Oracle8I安装过程中已经自动完成了,一般不用手动进行。  
  第三步:在sqlnet.ora(位于$ORACLE_HOME/NETWORK/ADMIN目录中)中,把 SQLNET.AUTHENTICATION _ SERVICES 设置为SQLNET.AUTHENTICATION_SERVICES= (NTS),意思为使用NT认证方式。

  第四步,在INIT<SID>.ORA(若无此文件,进入sqlplus,以sys登陆,运行create pfile from spfile;语句)中,将REMOTE_LOGIN_PASSWORD设置为NONE,意思是不用password认证方式。  
  完成以上步骤后,就可以在登录到NT后,直接在SQL*Plus 和SERVER MANAGER中CONNECT INTERNAL (CONNECT / AS SYSDBA)来作为超级用户登录到Oracle中,执行一些只有超级用户才能进行的操作。  
  在Unix下,情况有些不同。毕竟这是两个完全不同的操作系统。  
  首先,在安装Oracle之前,建立一个DBA组,这一步不用说了,不然是装不上Oracle的。一般还建立一个名为Oracle的用户,并把它加入到DBA组中。  
  第二步,设置REMOTE_LOGIN_PASSWORD为NONE。在Oracle8.1以后,该参数默认为EXCLUSIVE。一定要记得改过来。  
  第三步, 用该用户名登录Unix,运行SQL*Plus 或者SERVER MANAGER,输入以下命令:CONNECT INTERNAL (CONNECT / AS SYSDBA)来登录到Oracle中。  
  
  使用password文件认证的具体步骤:  
  Oracle提供orapwd实用程序来创建password 文件,运用orapwd建立该认证方式的具体步骤如下:  
  1.使用Orapwd实用程序来创建一个PASSWORD文件。语法:  
   orapwd file=文件名 password=internal用户密码 entried=entries.  
  详细解释:  
   
文件名要包含完整的全路径名,如果不指定,Oracle把它默认放置$ORACLE_HOME/dbs(Unix下)或者$ORACLE_HOME/DATABASE(NT下)下。  
  用户密码是用户internal的密码。当然后来还可以再向里边加入别的超级用户。  
  Entries表示最大允许有的超级用户数目。这个是一个可选的。前两者是必须指定的。一般会把它设置的比实际需要大一些,以免不够。  
  
  2. 把INIT<SID>.ORA中REMOTE_LOGIN_PASSWORD设置为EXCLUSIVE 或SHARED.使用EXCLUSIVE表示只有当前INSTANCE使用这个password文件。而且允许有别的用户作为sysdba登录进系统里边,而若选择了SHARED,则表明不止一个实例使用这个密码文件,伴随着一个很强的约束:sysdba权限只能授予sys和internal这两个用户名。(其实internal不是一个实际用户,而只是sys作为sysdba登录时的一个别名。)  (---- 在REMOTE_LOGIN_PASSWORDFILE参数设置为EXCLUSIVE、SHARED情况下,Oracle系统搜索密码文件的次序为:在系统注册库中查找ORA_SID_PWFILE参数值(系统注册库指的是

windows的注册表,缺省是不存在该键值的,所以需要在HKEY_LOCAMACNINE/SOFTWORE/ORACLE/HOME0/下添加该键值,类型为string型,值为密码文件全路径);若未找到,则查找ORA_PWFILE参数值;若仍未找到,则使用缺省值 ORACLE_HOME\DATABASE\PWDSID.ORA;其中的SID代表相应的Oracle数据库系统标识符。)
  同时还要记得把sqlnet.ora文件中SQLNET.AUTHENTICATION _SERVICES设置为NONE。一般在Unix下它是默认设置。在NT下,若选择典型安装时,会使用OS认证,而自定义时会使用密码文件认证方式。在安装过程中会提示输入INTERNAL密码。这样的话,就不用在手工创建密码文件和设定INTERNAL的密码了。  
  
  3. 用SQL*Plus 或SERVER MANAGER运行下面命令登录进系统:CONNECT INTERNAL/密码(在此之前需重启数据库)。  
  
  注意:  
  1.在Oracle8.1.6安装在WIN2000下创建数据库时,常常会发生凭证检索失败的错误。这是由于Oracle不能应用OS认证的结果。一般可以通过修改sqlnet.ora中SQLNET.AUTHENTICATION _SERVICES为NONE来解决。这时,Oracle将采用密码文件认证方式。  
  
  2.由于Oracle有几个系统预建的用户,所以最好在安装完成以后马上改变这些用户的密码。系统默认得密码分别为:internal/oracle , sys/change_on_install, system/manager.  
  
  3.当选择密码文件认证方式时,可以再向系统中加入其他超级用户。比如用以下语句把用户SCOTT加入超级用户之中:(由具有sysdba权限的人执行)  
  
  SQL>GRANT SYSDBA TO SCOTT;这样SCOTT用户就具有了sysdba权限。注意,此时SCOTT用户可以以两种身份登录:SCOTT , SYS.当SCOTT在登录时没有输入AS SYSDBA时,SCOTT是作为普通用户登录的。而当登录时输入了AS SYSDBA时,此时SCOTT登录进去的用户实际上为sys。这可以从下图观察:  
  
  4.当前系统中的具有sysdba权限的用户名可以从数据字典视图v$pwfile_user中查询得到: SELECT * FROM V$PWFILE_USERS; 如上图所示。  
  
  5.系统中最大的具有sysdba权限的用户数由创建密码文件时的ENTRIES参数决定。当需要创建更多的具有sysdba权限的用户时,就需要删除原有的密码文件,重新创建一个。这需要关闭数据库,删除密码文件,重新创建一个新的密码文件,在entries中输入足够大的数目。再启动 Oracle。这时,所有原来北授权的超级用户都不再存在,需要重新授权。所以在重新创建密码文件前,先要查询该视图,记下用户名,再在创建完密码文件后重新授权。  
  
  6. Internal用户密码忘记的处理方法:  
  有两种办法:  
  1. ALTER USER SYS IDENTIFIED BY 新密码;//这同时也改变了Internal的密码,在Oracle8I中通过  
  2. 重新创建一个新的密码文件,指定一个新的密码。
本文作者:网友 来源:网络收集
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的