• normal 普通身份 sysdba 系统管理员身份 sysoper 系统操作员身份 dba和sysdba


    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是根本不同概念了。

  • 相关阅读:
    Fixed Function Shader
    sqlserver 2014 数据库作业 通过脚本创建注意事项
    块存储、文件存储、对象存储意义及差异
    程序员如何成为架构师
    那些编程水平很高的程序员是怎么练成的?
    在ASP.NET Core调用WebService
    .net core 调用webservice同步方法
    Sqlserver中如何创建链接服务器
    JWT实现鉴权
    JWT原理实现代码
  • 原文地址:https://www.cnblogs.com/hanruyue/p/5943908.html
Copyright © 2020-2023  润新知