所以這兩個概念是完全不同的。Dba是壹個Oracle實例中對象的操作權限對應的壹組角色,sysdba是壹個概念性的角色,只是登錄認證的壹個身份。
讓我們通過詳細的例子來看看他們的區別。
1.
物理角色dba可以在數據字典中找到。
SQL & gtselect * from DBA _ roles where upper(role)= ' DBA ';
角色密碼
—————————— ——–
數據庫管理員編號
Sysdba是壹個在數據字典中找不到的概念性角色。
SQL & gtselect * from DBA _ roles where upper(role)= ' SYSDBA ';
未選擇任何行
2.
grant dba和grant sysdba的區別
Dba是壹個真實的角色,所以在grant之後記錄在dba_role_privs中,而不是revoke之後。
SQL & gt授予testuser DBA權限;
SQL & gtselect * from dba_role_privs其中grantee = ' TESTUSER
被授予者已授予_角色管理定義
—————————— —————————— — —
測試用戶資源否是
測試用戶連接否是
測試用戶DBA否是
SQL & gt從testuser中撤銷dba
SQL & gtselect * from dba_role_privs其中grantee = ' TESTUSER
被授予者已授予_角色管理定義
—————————— —————————— — —
測試用戶資源否是
測試用戶連接否是
sysdba不會出現這種情況,因為他不是真正的角色。
SQL & gt授予testuser SYSDBA權限;
SQL & gtselect * from dba_role_privs其中grantee = ' TESTUSER
被授予者已授予_角色管理定義
—————————— —————————— — —
測試用戶資源否是
測試用戶連接否是
這是sysdba記錄的內容,
我已經在壹篇文章和帖子中詳細描述了sysdba的登錄。
對了,登錄的時候需要sysdba。他與remote_login_passwordfile相關聯。
我們可以查詢v $ pwfile _ users
如下所示:
SQL & gtselect * from v$pw file _ users;
用戶名SYSDB SYSOP
—————————— —– —–
SYS TRUE TRUE
系統真與假
TESTUSER TRUE FALSE
妳授予sysdba,這裏就多了壹個。
先撤銷了再看。
SQL & gt從testuser中撤銷sysdba
SQL & gtselect * from v$pw file _ users;
用戶名SYSDB SYSOP
—————————— —– —–
SYS TRUE TRUE
系統真與假
不,我沒有。
所以dba和sysdba在這裏是根本不同的概念。