参考
- Oracle基础
- Oracle中sys和system用户的区别
- Oracle开发:dba和sysdba的区别
- Oracle sys和system用户、sysdba 和sysoper系统权限、sysdba和dba角色的区别
- 详解查看Oracle用户权限的七种方法
- oracle中sys用户和system用户的区别
- Oracle 用户,角色,权限等
- Oracle-权限大全
- Oracle中sysoper 的问题
- User 用户 还是 Role 角色 - Oracle 的 Public 是什么?
- oracle数据库中的public用户的作用
一、sys 和 system、public(特殊角色)、其他用户
sys
sys 用户必须用 sysdba 登录模式 才能登录数据库, 是Oracle数据库中权限最高的帐号 (SELECT * FROM V$PWFILE_USERS)。
如果在同一主机上使用IPC连接到数据库,使用操作系统授权的任何一个系统用户登录都可以拥有as sysdba 和 as sysoper。
以管理员身份登陆:sqlplus / as sysdba
缺省密码为CHANGE_ON_INSTALL ,且被授予DBA角色
public
public是特殊角色,你可以理解为所有数据库用户的集合。
以管理员身份登陆:sqlplus / as sysoper
system
system 用户必须用 normal (普通) 模式登录。
缺省密码为MANAGER,且被授予DBA角色
二、sysdba 和 sysoper、normal 登录模式
sysdba
即数据库管理员,功能包括:打开数据库服务器、关闭数据库服务器、备份数据库、恢复数据库、日志归档、会话限制、管理功能、创建数据库。
sysdba拥有最高的系统权限,登陆后的用户名是 sys
sysoper
即数据库操作员,功能包括:打开数据库服务器、关闭数据库服务器、备份数据库、恢复数据库、日志归档、会话限制。
sysoper主要用来启动、关闭数据库,sysoper 登陆后的用户名是 public
normal
即普通用户,权限只有查询某些数据表的数据。默认的身份是normal用户。
三、用户、权限、角色之间的关系
详细说明 Oracle 用户,角色,权限等 。
角色
oracle 提供了三种标准的角色(role): 一般情况下,一个普通用户,拥有CONNECT和RESOURCE两个角色就可以进行常规的数据库开发工作
CONNECT
拥有connect角色的用户,可以与服务器建立连接会话(session,客户端和服务器连接,称为会话),主要应用于临时用户,不需要建表的用户
RESOURCE
resource 提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)等
DBA
DBA角色拥有所有的系统权限,包括无限制的空间限额和给其他用户授予各种权限的能力。用户system拥有DBA角色
四、概念混淆
-
dba 和 sysdba 的区别
- sysdba,是管理oracle实例的,它的存在不依赖于整个数据库完全启动,只要实例启动了,他就已经存在,以 sysdba模式 登陆,装载数据库、打开数据库。只有在数据库完全启动后,dba角色才有了存在的基础.
- dba是一种role对应的是对Oracle实例里对象的操作权限的集合,而sysdba是一种登录认证时的身份标识而已。而且 dba 是Oracle里的一种对象,Role 和User一样,是实实在在存在在Oracle里的物理对象,而sysdba是指的一种概念上的操作对象(身份标识),在Oracle数据里并不存在。
- sysdba 不是权限,当用户以 sysdba 身份标识登陆数据库时,登陆用户都会变成SYS。
- dba 和 sysdba 是根本不同的概念。
- sysoper 与 sysdba 不是角色,DBA角色也不包含这两种权限。
这是两种用于完成数据库管理任务的特殊权限,如数据库创建,实例启动、关闭等
这两个权限独立于数据库之外,位于数据库密码文件之中,属于密码认证范畴
通常在启动数据库时使用的场合较多,当然也可以以这两种方式连接数据库
连接数据库时使用sysdba则show user查看时为sys,使用sysoper则show user查看时为public