zoukankan      html  css  js  c++  java
  • 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是根本不同概念了。

  • 相关阅读:
    nmon监控及分析(转)
    Python资源大全
    pyqt4使用简易笔记
    windows下 使用pyinstaller 打包os.Popen()问题
    用pyautogui操作windows
    jmeter 报错:java.net.BindException: Address already in use: connect
    jmeter 报错Non HTTP response code: org.apache.http.conn.ConnectTimeoutException
    vue父子组件通信
    centos6.7安装mysql-5.7
    linux下 多python环境 修改默认python2为python3
  • 原文地址:https://www.cnblogs.com/hanruyue/p/5943908.html
Copyright © 2011-2022 走看看