Chinaunix首页 | 论坛 | 博客
  • 博客访问: 721659
  • 博文数量: 94
  • 博客积分: 1937
  • 博客等级: 上尉
  • 技术积分: 1618
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-04 18:46
个人简介

专注数据库开发管理

文章分类

全部博文(94)

文章存档

2015年(1)

2014年(2)

2013年(19)

2012年(32)

2011年(10)

2010年(30)

分类:

2010-11-01 17:30:02

dba是Oracle里的Role对象,是一种role对应的是对Oracle实例里对象的操作权限的集合,

sysdba指一种概念上的操作对象,在Oracle数据里并不存在,是概念上的role是一种登录认证时的身份标识


物理上的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';

未选定行

grant dba 和grant sysdba的差别 
dba是正真的role,所以grant后在dba_role_privs里有记录,而revoke后就没有了

SQL> grant dba to USERNAME;

授权成功。

SQL> select * from dba_role_privs where grantee = 'USERNAME';

GRANTEE                        GRANTED_ROLE                   ADM DEF
------------------------------ ------------------------------ --- ---
USERNAME                             DBA                            NO YES

SQL> revoke dba from USERNAME;

撤销成功。

SQL> select * from dba_role_privs where grantee = 'USERNAME';

未选定行

对于sysdba是不会出现这个情况的,因为他不是正真的role 


SQL> grant sysdba to USERNAME;

授权成功。

SQL> select * from dba_role_privs where grantee = 'USERNAME';

未选定行

sysdba是登录时候需要的他是和remote_login_passwordfile关联的 
可以查询v$pwfile_users: 

SQL> select * from v$pwfile_users;

USERNAME                       SYSDB SYSOP
------------------------------ ----- -----
SYS                            TRUE TRUE
USERNAME                             TRUE FALSE
当你grant sysdba后,在这里就多了一条

下面我们revoke一下,再来看 
SQL> revoke sysdba from USERNAME;

撤销成功。

SQL> select * from v$pwfile_users;

USERNAME                       SYSDB SYSOP
------------------------------ ----- -----
SYS                            TRUE TRUE


没有了。

通过上面的对比,我相信大家对DBA和SYSDBA的区别人生的比较深入了吧

另:以sysdba登录,对应用户是sys;   以sysoper登录,对应用户是public;




阅读(1089) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~