ora_dba sysdba & dba的辨析

来源:互联网 发布:软件打包 编辑:程序博客网 时间:2024/05/23 12:52
dba是Oracle里的一种对象(更精确地描述是 DBA是Oracle数据库定义的一个Role),Role 和User一样,是实实在在存在在Oracle里的物理对象,而sysdba是指的一种概念上的操作对象,在Oracle数据里并不存在。 所以说这两个概念是完全不同的。dba是一种role,它所对应的是对Oracle实例里对一系列操作权限的集合,而sysdba是概念上的role,仅是是一种登录认证时的身份标识而已。


下面我们通过详细的实例来看看他们的区别


1. 物理上的role dba 是可以在数据字典里查到的
SQL> Select * From Dba_Roles Where Role = 'DBA'; (由于Oracle不同数据库版本差异 此视图的列数可能不同 后面视图也有类似情况)
ROLE PASSWORD AUTHENTICAT
------------------------------ -------- -----------
DBA NO NONE


而sysdba是概念上的role在数据字典里是查不到的


SQL> Select * From Dba_Roles Where Role ='SYSDBA';
no rows selected


2. grant dba 和grant sysdba的差别
dba是真正的role,所以grant后在dba_role_privs里有记录,而revoke后就没有了


SQL> GRANT DBA TO SH;
SQL> Select * From Dba_Role_Privs Where Grantee = 'SH';
GRANTEE GRANTED_ROLE ADM DEF
------------------------------ ------------------------------ --- ---
SH RESOURCE NO YES
SH CWM_USER NO YES
SH DBA NO YES


SQL> REVOKE DBA FROM SH;
SQL> Select * From Dba_Role_Privs Where Grantee = 'SH';
GRANTEE GRANTED_ROLE ADM DEF
------------------------------ ------------------------------ --- ---
SH RESOURCE NO YES
SH CWM_USER NO YES


对于sysdba是不会出现这个情况的,因为他不是真正的role
SQL> GRANT SYSDBA TO SH;
SQL> Select * From Dba_Role_Privs Where Grantee = 'SH';
GRANTEE GRANTED_ROLE ADM DEF
---------------------------------------
TESTUSER RESOURCE NO YES
TESTUSER CONNECT NO YES


3. sysdba是登录时候需要的一种认证方式
所以它适合和remote_login_passwordfile关联的 它所记录的相关视图则是v$pwfile_users;


SQL> GRANT SYSDBA TO SH;
SQL> Select * From V$Pwfile_Users;
USERNAME SYSDB SYSOP SYSAS
------------------------------ ----- ----- -----
SYS TRUE TRUE FALSE
SH TRUE FALSE FALSE


SQL> REVOKE SYSDBA FROM SH;
SQL> Select * From V$Pwfile_Users;
USERNAME SYSDB SYSOP SYSAS
------------------------------ ----- ----- -----
SYS TRUE TRUE FALSE


4. sysdba的作用是使用户可以使用特定身份来登录Oracle数据库(dba_users中的sys)并可以执行任何关于数据库方面的命令和操作
相比DBA角色拥有的权限更大 比如可以create pfile,但dba角色是无法create pfile的


SQL> GRANT DBA TO SH;
授权成功。


SQL> conn sh/sysdba@athlon4_ora11g
已连接。


SQL> show user;
USER 为 "SH"


SQL> SELECT * FROM USER_ROLE_PRIVS;


USERNAME GRANTED_ROLE ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
SH CWM_USER NO YES NO
SH DBA NO YES NO
SH RESOURCE NO YES NO


SQL> create pfile from spfile;
create pfile from spfile
*
第 1 行出现错误:
ORA-01031: 权限不足




SQL> conn sh/sysdba@athlon4_ora11g as sysdba
已连接。


SQL> show user;
USER 为 "SYS"


SQL> show parameter spfile;


NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string D:\ORACLE\PRODUCT\11.2.0\DB_1\
DATABASE\SPFILEORA11G.ORA
SQL> create pfile from spfile;
文件已创建。




5. ora_dba的作用 Members can connect to the Oracle database as a DBA without a Password
ora_dba 主要是配合着ORACLE_HOME/network/admin/sqlnet.ora使用
主要作用进行登录方式设置
举例在windows环境下 SQLNET.AUTHENTICATION_SERVICES= (NTS) 那么ora_dba组中的用户可以不使用密码进行登录
在AUX环境下 sqlnet.ora文件默认可以不配置


ora_dba 对远程登录用户不起作用 对远程用户起作用的主要是remote_login_password初始化参数和PWD<SID>.ora文件
0 0