我们使用第在DB Browser 中没有显示相对应的表,是因为我们使用第二个用户名登录,在pl/SQl能查到该表,MyEclipse 的DB Browser不能显示。那么我下面来介绍下他们的区别: 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架构存储在数据字典中,类似于SQLserver中
的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_mapwhere name like '%SYS%';
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-3 ALTER SYSTEM 0
-4 AUDIT SYSTEM 0
-83 SYSDBA 0
-84 SYSOPER 0
下面的链接是两者不同的权限说明
http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/dba.htm#sthref137
The manner in which you are authorizedto use these privileges depends upon the methodof
authentication that you use.When you connectwith SYSDBA or SYSOPER privileges, you connectwith
a default schema, notwith the schema thatis generally associated with your username. For
SYSDBA this schema is SYS; for SYSOPER theschema is PUBLIC.
--两者的schema不同
SQL> show user
USER is "SYS"
SQL> conn / as sysoper
Connected.
SQL> show user
USER is "PUBLIC"
在使用OEM登陆时,还有一种登陆时角色的选择则是normal,这个是对所有普通用户而言,登陆后其schema是自身
--查看密码文件视图,可以得到哪些用户为sysdba,哪些用户为sysoper
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
SCOTT TRUE FALSE
USR1 FALSE TRUE
--下面演示了使用不同的角色来登陆
SQL> conn scott/tiger@orclas sysdba
Connected.
SQL> show user; --尽管登陆的帐户是scott,但执行show user显示的是sys
USER is "SYS"
SQL> conn scott/tiger@orclas sysoper /*scott的sysop列为false*/
ERROR:
ORA-01031: insufficient privileges
Warning: You are no longer connected to ORACLE.
SQL> conn usr1/usr1@orclas sysdba
ERROR:
ORA-01031: insufficient privileges
SQL> conn usr1/usr1as sysoper
Connected.
SQL> show user; --登陆的帐户是usr1,执行show user显示的是public
USER is "PUBLIC"
sys@ORCL> select * from dba_roleswhere role like 'SYS%';--不存在这两个角色
no rows selected
--下面演示sysdba与sysoper都可以用来启动数据库
idle> conn scott/tigeras sysdba
Connected to an idle instance.
idle> startup
idle> conn usr1/usr1as sysoper
Connected to an idle instance.
idle> startup
总结:
sysoper与sysdba不是角色,DBA角色也不包含这两种权限。
这是两种用于完成数据库管理任务的特殊权限,如数据库创建,实例启动、关闭等
这两个权限独立于数据库之外,位于数据库密码文件之中,属于密码认证范畴
通常在启动数据库时使用的场合较多,当然也可以以这两种方式连接数据库
连接数据库时使用sysdba则show user查看时为sys,使用sysoper则showuser查看时为public