dba和sysdba的區別
as sysdba 就是以sysdba登入,oracle登入身份有三種:
normal 普通身份
sysdba 系統管理員身份
sysoper 系統操作員身份
每種身份對應不同的許可權
sysdba許可權:
●啟動和關閉操作
●更改資料庫狀態為開啟/裝載/備份,更改字符集
●建立資料庫
●建立伺服器引數檔案spfile
●日誌歸檔和恢復
●包含了“會話許可權”許可權
sysoper許可權:
●啟動和關閉操作
●更改資料庫狀態為開啟/裝載/備份
●建立伺服器引數檔案SPFILE
●日誌歸檔和恢復
●包含了“會話許可權”許可權
請關注2個檢視:dba_role_privs與 v$pwfile_users。
言簡意賅的說下就是 dba跟dba_role_privs有關,而sysdba跟v$pwfile_users有關
下面引用下csdn一網友的小實驗:
1. 物理上的role dba 是可以在資料字典裡查到的
SQL> select * from dba_roles where upper(role) = ‘DBA’;
ROLE PASSWORD
—————————— ——–
DBA NO
而sysdba是概念上的role在資料字典裡是查不到的
SQL> select * from dba_roles where upper(role) = ‘SYSDBA’;
no rows selected
2. grant dba 和grant sysdba的差別
dba是正真的role,所以grant後在dba_role_privs裡有記錄,而revoke後就沒有了
SQL> grant dba to testuser;
SQL> select * from dba_role_privs where grantee = ‘TESTUSER’;
GRANTEE GRANTED_ROLE ADM DEF
—————————— —————————— — —
TESTUSER RESOURCE NO YES
TESTUSER CONNECT NO YES
TESTUSER DBA NO YES
SQL> revoke dba from testuser;
SQL> select * from dba_role_privs where grantee = ‘TESTUSER’;
GRANTEE GRANTED_ROLE ADM DEF
—————————— —————————— — —
TESTUSER RESOURCE NO YES
TESTUSER CONNECT NO YES
對於sysdba是不會出現這個情況的,因為他不是正真的role
SQL> grant sysdba to testuser;
SQL> select * from dba_role_privs where grantee = ‘TESTUSER’;
GRANTEE GRANTED_ROLE ADM DEF
—————————— —————————— — —
TESTUSER RESOURCE NO YES
TESTUSER CONNECT NO YES
那麼這個是sysdba是這麼記錄的
sysdba是登入時候需要的他是和remote_login_passwordfile關聯的
我們可以查詢v$pwfile_users;
如下:
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
—————————— —– —–
SYS TRUE TRUE
SYSTEM TRUE FALSE
TESTUSER TRUE FALSE
當你grant sysdba後,在這裡就多了一條
下面我們revoke一下,再來看
SQL> revoke sysdba from testuser;
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
—————————— —– —–
SYS TRUE TRUE
SYSTEM TRUE FALSE
消失了對吧。
所以在這裡dba和sysdba是根本不同概念了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22907091/viewspace-703450/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sysdba和dba的區別
- Oracle dba角色和sysdba的區別Oracle
- sysdba,dba,sysoper的區別
- 關於sysdba,sysoper,dba的區別
- DBA,SYSDBA,SYSOPER三者的區別
- SYS,SYSTEM,DBA,SYSDBA,SYSOPER的區別與聯絡
- dba和sysdba的區別(轉自“三十而立專欄”部落格)
- sysdba,sysoper,normal的區別ORM
- normal 、sysdba、 sysoper的區別ORM
- Oracle DBA 和Oracle EBS DBA 的最大區別Oracle
- system sys,sysoper sysdba 的區別
- 【Privilege】SYSOPER和SYSDBA特權的區別與聯絡
- dba_tables 和 dba_segments 表中 blocks 的區別BloC
- dba_data_files和v$datafile的區別
- normal、sysdba、sysoper登陸oracle的區別理解ORMOracle
- DBA_TAB_COLUMNS和DBA_TAB_COLS 兩個檢視的區別
- Oracle dba_objects和all_objects 最大的區別OracleObject
- dba_segments/dba_extents/dba_tables區別
- ../和./和/的區別
- 和 的區別
- as 和 with的區別
- ||和??的區別
- /*和/**的區別
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- ./ 和sh 的區別
- JQuery this和$(this)的區別jQuery
- jquery $(this) 和this的區別jQuery
- T和?的區別
- ++a和a++的區別
- makefile =和:=的區別
- Mybatis中#{}和${}傳參的區別及#和$的區別小結MyBatis
- 和區別
- 31、ASM的使用者SYSDBA和SYSOPERASM
- MYSQL和SQL的區別MySql
- varchar和char的區別
- &self 和 self 的區別
- var和public的區別