DBA与sysdba的区别?比如我赋予了一个test用户dba权限,那么用这个用户在OEM登陆的时候为什么只能以normal身份登录而不能以sysdba登陆哪。

解决方案 »

  1.   

    DBA 是一种角色 role,其中不包括 sysdba 权限。
      

  2.   

    sysdba是管理整个库的系统字典的超级用户,权限比DBA高,sysdba>system>=其他用户
      

  3.   

    dba是Oracle里的一种对象,Role 和User一样,是实实在在存在在Oracle里的物理对象,而sysdba是指的一种概念上的操作对象,在Oracle数据里并不存在。所以说这两个概念是完全不同的。dba是一种role对应的是对Oracle实例里对象的操作权限的集合,而sysdba是概念上的role是一种登录认证时的身份标识而已。下面我们通过详细的实例来看看他们的区别1.
    物理上的role dba 是可以在数据字典里查到的
    SQL> select * from dba_roles where upper(role) = 'DBA';ROLE                           PASSWORD
    ------------------------------ --------
    DBA                            NO而sysdba是概念上的role在数据字典里是查不到的SQL> select * from dba_roles where upper(role) = 'SYSDBA';
    no rows selected2.
    grant dba 和grant sysdba的差别
    dba是正真的role,所以grant后在dba_role_privs里有记录,而revoke后就没有了SQL>  grant dba to testuser;
    SQL> select * from dba_role_privs where grantee = 'TESTUSER';
    GRANTEE                        GRANTED_ROLE                   ADM DEF
    ------------------------------ ------------------------------ --- ---
    TESTUSER                       RESOURCE                       NO  YES
    TESTUSER                       CONNECT                        NO  YES
    TESTUSER                       DBA                            NO  YES
    SQL>  revoke dba from testuser;
    SQL> select * from dba_role_privs where grantee = 'TESTUSER';
    GRANTEE                        GRANTED_ROLE                   ADM DEF
    ------------------------------ ------------------------------ --- ---
    TESTUSER                       RESOURCE                       NO  YES
    TESTUSER                       CONNECT                        NO  YES对于sysdba是不会出现这个情况的,因为他不是正真的role
    SQL> grant sysdba to testuser;
    SQL> select * from dba_role_privs where grantee = 'TESTUSER';
    GRANTEE                        GRANTED_ROLE                   ADM DEF
    ------------------------------ ------------------------------ --- ---
    TESTUSER                       RESOURCE                       NO  YES
    TESTUSER                       CONNECT                        NO  YES那么这个是sysdba是这么记录的叻,
    我在一个文章和帖子里对对sysdba的登录有过详细的叙述
    对了,sysdba是登录时候需要的他是和remote_login_passwordfile关联的
    我们可以查询v$pwfile_users;
    如下:
    SQL> select * from v$pwfile_users;
    USERNAME                       SYSDB SYSOP
    ------------------------------ ----- -----
    SYS                            TRUE  TRUE
    SYSTEM                         TRUE  FALSE
    TESTUSER                       TRUE  FALSE
    当你grant sysdba后,在这里就多了一条
    下面我们revoke一下,再来看
    SQL> revoke sysdba from testuser;
    SQL> select * from v$pwfile_users;
    USERNAME                       SYSDB SYSOP
    ------------------------------ ----- -----
    SYS                            TRUE  TRUE
    SYSTEM                         TRUE  FALSE没有叻。所以在这里dba和sysdba是根本不同概念了。有关sysdba登录的解释可以查看帖子
    http://topic.csdn.net/u/20090429/12/6d495d87-9f04-4828-ab2a-cb186ba8c5de.html====================================================================================如果你需要帮助或想和我一起学习的请联系
    联系方式QQ:370140387
    QQ群:  85837884(注明:数据库)
    电子邮件:[email protected]
    网站: http://www.inthirties.com
      

  4.   

    hoho  好!!
    不过,为什么SYS/manager有时候不能进呢
      

  5.   

    ....没发现过该问题...
    DBA与sysdba的区别?
    DBA角色,sysdba是用户...区别可大了
    而你用一个具有DBA角色权限登陆的test账号,它还是一个普通用户账号,只能以normal身份登录..
      

  6.   


    sys/manager进不去的话,和认证策略有关,可以看另一个帖子http://topic.csdn.net/u/20090425/21/314fb45c-9348-4c49-a35d-3b9bfc87cf0c.html或者
    http://www.inthirties.com/?p=379 
    http://www.inthirties.com/?p=48 ==================================================================================== 
    Inthirties提供专业的针对Oracle的数据库优化,安全,恢复,迁移以及Oracle DBA培训等专业 
    服务。同时还提供针对企业ERP实施和建设的规划,开发和实施等ERP企业咨询服务。 如果你需要帮助或想和我一起学习的请联系 
    联系方式QQ:370140387 
    QQ群:  85837884(注明:数据库) 
    电子邮件:[email protected] 
    网站: http://www.inthirties.com