专注数据库开发管理
分类:
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;