DBA,SYSDBA,SYSOPER三者的區別

什麼是DBA?什麼是SYSDBA,什麼又是SYSOPER?三者究竟有何聯繫呢?

在Oracle數據庫領域裏,很多Oracle初學者(Me 2)很容易被這三個術語迷惑,就其原因還是基礎概念沒有弄清楚。記得自己剛開始接觸Oracle的時候,也是雲裏霧裏,現在基本弄明白,故寫出來和大家分享:

DBA:在Oracle數據庫裏面其實只是一個角色(role)。那麼什麼是角色呢?可以簡單的認爲一個角色就是某些個權限的集合體,也就是說把多個系統權限(system privilege),對象權限(object privilege)以及角色(role)揉和在一起,然後賦給一個角色。說白了,Oracle引入角色的概念,其實是爲了避免相關的系統權限和對象權限的賦予和回收的複雜性。把一堆系統權限和對象權限以及角色打包之後賦給某個新角色,然後再對這個新角色進行必要的操作就顯得相當便捷和方便了。當然,在Oracle裏面一個角色是可以賦給另外一個角色的,但是角色的賦給是不能夠構成循環迴路的。eg:先把role1給role2,然後把role2給role3,那麼你就不可以再把role3給role1了。這是Oracle不允許的,其實你也不可以成功執行這樣的包含迴路角色的授權的!

只有數據庫打開了,或者說整個數據庫完全啓動後,dba角色纔有了存在的基礎


SYSDBA:擁有最高的系統權限,sysdba,是管理oracle實例的,它的存在不依賴於整個數據庫完全啓動,只要實例啓動了,他就已經存在,以sysdba身份登陸,裝載數據庫、打開數據庫

SQL>conn / as sysdba;這時候,其實我們是以SYSDBA這個身份去登陸數據庫的,我們當前的default schema是SYS

以SYSDBA登陸Oracle數據庫時,上述幾種操作是允許執行的。SYSDBA可以訪問V$對象視圖

SYSOPER:也是一種系統權限,只不過跟SYSOPER略有區別而已。SQL>conn /as sysoper 這種連接下,我們的default schema是PUBLIC.


簡單區別如下:

SQL> conn sys/oracle as sysdba;

Connected to an idle instance.

SQL> show user;

USER is “SYS”

SQL> conn sys/oracle as sysoper;

Connected to an idle instance.

SQL> show user;

USER is “PUBLIC”

sys

SQL>

Note:The SYSDBA and SYSOPER system privileges allow access to a database instance even when the database is not open. Control of these privileges is totally outside of the database itself.

SYSOPER不能訪問V$對象視圖


sysdba和sysoper具體的權限可以看下錶:

系統權限

sysdba

sysoper

區別

Startup(啓動數據庫)

startup

Shutdown(關閉數據庫)

shutdown

 

alter database open/mount/backup

alter database open/mount/backup

 

改變字符集

none

 

create database(創建數據庫)

None不能創建數據庫

 

drop database(刪除數據庫)

none

 

create spfile

create spfile

 

alter database archivelog(歸檔日誌)

alter database archivelog

 

alter database recover(恢復數據庫)

只能完全恢復,不能執行不完全恢復

 

擁有restricted session(會話限制)權限

擁有restricted session權限

 

可以讓用戶作爲sys用戶連接

可以進行一些基本的操作,但不能查看用戶數據

 

登錄之後用戶是sys

登錄之後用戶是public

 

SYSDBA和SYSOPER系統權限允許我們在數據庫打開之前以這兩種身份去訪問實例。SYSOPER沒有權限訪問V$對象視圖

 

當然,DBA還可以理解成另外兩個術語的簡寫;Database Administrator,Data Block Address。

一句話總結三者之間的關係:

Note: The DBA role does not include the SYSDBA or SYSOPER system privileges. These are special administrative privileges that allow an administrator to perform basic database administration tasks, such as creating the database and instance startup and shutdown.

DBA 角色並未包含SYSDBA,SYSOPER這兩個系統權限。他們是一類特殊的系統管理權限,允許管理員以這兩種身份對數據庫進行特殊的管理工作。

還有就是,不要輕易將SYSDBA,SYSOPER這兩種系統權限授權給數據庫的普通用戶。也不要輕易將DBA角色賦給普通用戶。在對數據庫進行普通操作的時候,也不要以SYSDBA,SYSOPER登錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章