system sys,sysoper sysdba 的區別

beatony發表於2011-07-29
system sys,sysoper sysdba 的區別
分類: Oracle 其它特性 373人閱讀 評論(1) 舉報

--=====================================

-- system syssysoper sysdba 的區別

--=====================================

 

    Oracle sys,system帳戶以及登陸時的normal,sysoper,sysdba是經常容易混淆的幾個概念,下面詳細講述了

這幾個的區別。

 

一、sys,system帳戶

    Oracle 資料庫安裝完畢後,系統會自動建立兩個帳戶如下:

    sys     :預設密碼為CHANGE_ON_INSTALL ,且被授予DBA角色

    system  :預設密碼為MANAGER,且被授予DBA角色

 

    下面具體描述syssystem帳戶

    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)

       

    :syssystem兩個帳戶都屬於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許可權

        除了能執行上述所有命令之外,還能建立資料庫,刪除資料庫,資料庫日誌歸檔,執行不完全恢復,

        以及建立其它的sysopersysdba使用者

       

    SQL> select * from system_privilege_map where 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 authorized to use these privileges depends upon the method of

    authentication that you use.When you connect with SYSDBA or SYSOPER privileges, you connect with

    a default schema, not with the schema that is generally associated with your username. For

    SYSDBA this schema is SYS; for SYSOPER the schema 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@orcl as sysdba

        Connected.

       

        SQL> show user;     --儘管登陸的帳戶是scott,但執行show user顯示的是sys

        USER is "SYS"

       

        SQL> conn scott/tiger@orcl as sysoper  /*scottsysop列為false*/

        ERROR:

        ORA-01031: insufficient privileges

        Warning: You are no longer connected to ORACLE.

       

        SQL> conn usr1/usr1@orcl as sysdba

        ERROR:

        ORA-01031: insufficient privileges

 

        SQL> conn usr1/usr1 as sysoper

        Connected.

       

        SQL> show user;    --登陸的帳戶是usr1,執行show user顯示的是public

        USER is "PUBLIC"

       

        sys@ORCL> select * from dba_roles where role like 'SYS%'; --不存在這兩個角色

       

        no rows selected

       

    --下面演示sysdbasysoper都可以用來啟動資料庫

        idle> conn scott/tiger as sysdba

        Connected to an idle instance.

        idle> startup

       

        idle> conn usr1/usr1 as sysoper

        Connected to an idle instance.

        idle> startup  

       

    總結:

        sysopersysdba不是角色,DBA角色也不包含這兩種許可權。

        這是兩種用於完成資料庫管理任務的特殊許可權,如資料庫建立,例項啟動、關閉等

        這兩個許可權獨立於資料庫之外,位於資料庫密碼檔案之中,屬於密碼認證範疇

        通常在啟動資料庫時使用的場合較多,當然也可以以這兩種方式連線資料庫

        連線資料庫時使用sysdbashow user檢視時為sys,使用sysopershow user檢視時為public

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22578826/viewspace-703475/,如需轉載,請註明出處,否則將追究法律責任。

相關文章