ITPub博客

首页 > Linux操作系统 > Linux操作系统 > dba和sysdba的区别

dba和sysdba的区别

原创 Linux操作系统 作者:wengtf 时间:2011-07-29 10:59:28 0 删除 编辑

as sysdba 就是以sysdba登录,oracle登录身份有三种:
normal 普通身份
sysdba 系统管理员身份
sysoper 系统操作员身份
每种身份对应不同的权限

sysdba权限:
●启动和关闭操作
●更改数据库状态为打开/装载/备份,更改字符集
●创建数据库
●创建服务器参数文件spfile
●日志归档和恢复
●包含了“会话权限”权限

sysoper权限:
●启动和关闭操作
●更改数据库状态为打开/装载/备份
●创建服务器参数文件SPFILE
●日志归档和恢复
●包含了“会话权限”权限

请关注2个视图:dba_role_privs与 v$pwfile_users。

言简意赅的说下就是 dba跟dba_role_privs有关,而sysdba跟v$pwfile_users有关
下面引用下csdn一网友的小实验:

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是登录时候需要的他是和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是根本不同概念了。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22907091/viewspace-703450/,如需转载,请注明出处,否则将追究法律责任。

下一篇: fuser vs lsof
请登录后发表评论 登录
全部评论

注册时间:2011-04-07

  • 博文量
    62
  • 访问量
    190925