用MyEclipse 的DB Browser 访问oracle数据库后看不到表

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

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

 



版权声明:本文为huangshengzhi原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。