我刚刚遇到了这样的问题,研究了好久我才发现我们登录的用户不一样。

0818b9ca8b590ca3270a3433284dd417.png

我们使用第在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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐