--=====================================
-- system sys,sysoper sysdba 的区别
--=====================================
Oracle 中sys,system帐户以及登陆时的normal,sysoper,sysdba是经常容易混淆的几个概念,下面详细讲述了这几个的区别。
一、sys,system帐户
当Oracle 数据库安装完毕后,系统会自动创建两个帐户如下:
sys:缺省密码为CHANGE_ON_INSTALL ,且被授予DBA角色
system:缺省密码为MANAGER,且被授予DBA角色
下面具体描述sys与system帐户
sys :这个帐户相当于SQL server中的sa帐户,或者说Xp系统中的administrator,或Linux系统中的root帐户,是个超级帐户,拥有的权限最大,可以完成数据库的所有管理任务。Oracle中全部的基表,视图等都是以sys架构存储在数据字典中,类似于SQL server中的master数据库,存储了所有最原始最基本最关键的系统结构,数据等。因此所有以sys架构的对象不允许用户或数据库管理员修改,也不建议创建sys架构的对象。
system :该帐户除了不能完成备份恢复,以及升级之外的数据库所有管理任务,通常用来创建一些用于查看管理信息的表或视图,以及一些被不同Oracle数据库选项和工具使用的内部表或内部视图。同样也不建议使用system架构来创建一些与管理无关的表或视图。
--如下使用system连接rman时提示权限不够,而sys帐户则可以正常连接
RMAN> connect target system/RedHat@orcl--使用system帐户连接失败
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
ORA-01031: insufficient privileges
RMAN> connect target sys/redhat@orcl--使用sys帐户连接成功
connected to target database: ORCL (DBID=1261365217)
注:sys与system两个帐户都属于dba角色,但是两者拥有不同的权限,sys拥有更多的权限。
system@ORCL> grant sysoper to usr1;--对于特殊权限system不能够授予用户
grant sysoper to usr1
*
ERROR at line 1:
ORA-01031: insufficient privileges
system@ORCL> conn / as sysdba
Connected.
sys@ORCL> grant sysoper to usr1;--sys用户则可以完成上面的授权操作
Grant succeeded.
二、Sysoper Sysdba
sysoper权限能够执行下列操作
startup
shutdown
create spfile
alter database [mount | open | close | dismount]
alter [database | tablespace] [begin | end] backup
alter database recover
restricted session
sysdba权限
除了能执行上述所有命令之外,还能创建数据库,删除数据库,数据库日志归档,执行不完全恢复,
以及创建其它的sysoper和sysdba用户
SQL> select * from system_privilege_map where name like '%SYS%';
PRIVILEGE NAMEPROPERTY
---------- ---------------------------------------- ----------
-3 ALTER SYSTEM0
-4 AUDIT SYSTEM0
-83 SYSDBA0
-84 SYSOPER0