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(注明:数据库)

电子邮件:[email protected]

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

你可能感兴趣的:(Oracle数据库管理专栏)