1. 程式人生 > >Oracle DBA和SYSDBA SYS和SYSTEM

Oracle DBA和SYSDBA SYS和SYSTEM

        第一次接觸Oracle,感覺還有不少東西要學,還是拿本書過來會比較靠譜。最近在網上也學了些,記錄一下。

        Oracle下所有的表是屬於對應的使用者的,而多個使用者可以共用表空間。需要建立一個方案時登入SYSTEM新建個使用者就好。然後再賦DBA許可權。然後問題來了,DBA許可權是啥?我一般會直接grant dba to xxx;

        然後就會發現DBA和SYSDBA兩個東西傻傻分不清楚。於是,弄清楚。DBA對應了一組資料操作的許可權。

SYSDBA不是許可權,當用戶以SYSDBA身份登陸資料庫時,登陸使用者都會變成SYS。
SYSDBA身份登陸可以開啟,關閉資料庫,建立SPFILE,對資料庫進行恢復操作等,而這些是DBA角色無法實現的;
SYSDBA是系統許可權,DBA是使用者物件許可權;
SYSDBA,是管理oracle例項的,它的存在不依賴於整個資料庫完全啟動,只要例項啟動了,他就已經存在;
以SYSDBA身份登陸,裝載資料庫、開啟資料庫,只有資料庫打開了,或者說整個資料庫完全啟動後,DBA角色才有了存在的基礎;

DBA是一種role對應的是對Oracle例項裡物件的操作許可權的集合,而SYSDBA是概念上的role是一種登入認證時的身份標識而已。而且,DBA是Oracle裡的一種物件,Role 和User一樣,是實實在在存在在Oracle裡的物理物件,而SYSDBA是指的一種概念上的操作物件,在Oracle資料裡並不存在。

Oracle登入的時候有兩種認證方式,一種是“作業系統認證”,一種是“口令檔案認證”。
1、當採取作業系統認證的時候,在本地用任何使用者都可以以SYSDBA登陸;(預設方式)
2、當採取口令檔案認證的時候,就不是任何使用者都可以用SYSDBA登陸了,這個時候必須輸入正確的使用者名稱口令才可以(其實這種方法才是安全的)
3、至於你本地的到底採用哪種認證方式,是可以通過parameter來設定的。

SYSTEM是資料庫內建的一個普通管理員,你手工建立的任何使用者在被授予DBA角色後都跟這個使用者差不多。
SYS用資料庫的超級使用者,資料庫內很多重要的東西(資料字典表、內建包、靜態資料字典檢視等)都屬於這個使用者,SYS使用者必須以SYSDBA身份登入。