oracle dba和sysdba的区别

来源:互联网 发布:300英雄跳跃网络 编辑:程序博客网 时间:2024/05/15 22:42

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 没有叻。

原创粉丝点击