dba和sysdba的区别

看见Csdn的Oracle技术版块有人提出关于dba和sysdba的一些困惑,这里详细的介绍一下两者的区别。

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 selected 

2. 
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

 



===============================================================

Inthirties关注Oracle数据库 维护,优化,安全,备份,恢复,迁移,故障处理

 

如果你需要帮助或想和我一起学习的请联系

联系方式QQ:370140387

QQ群:  85837884(注明:数据库)

电子邮件:dba@Inthirties.com

网站: http://www.inthirties.com

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inthirties

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值