dba和sysdba的區別

2021-07-22 08:20:29 字數 2761 閱讀 5738

看見csdn的oracle技術版塊有人提出關於dba和sysdba的一些困惑,這裡詳細的介紹一下兩者的區別。

dba是oracle裡的一種物件,role 和user一樣,是實實在在存在在oracle裡的物理物件,而sysdba是指的一種概念上的操作物件,在oracle資料裡並不存在。

所以說這兩個概念是完全不同的。dba是一種role對應的是對oracle例項裡物件的操作許可權的集合,而sysdba是概念上的role是一種登入認證時的身份標識而已。

下面我們通過詳細的例項來看看他們的區別

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的登入有過詳細的敘述 

對了,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是根本不同概念了。

有關sysdba登入的解釋可以檢視帖子

Oracle中sysdba和dba的區別

sysdba不是許可權,當使用者以sysdba身份登陸資料庫時,登陸使用者都會變成sys。oracle ora11g sqlplus ogg4o ogg4o as sysdba sql show user user is sys sysdba身份登陸可以開啟,關閉資料庫,建立spfile,對資料庫進...

Oracle dba和sysdba的區別

size large 之前老是把dba和sysdba混為一體,今天看到論壇在討論兩者的區別,特記錄如下 sysdba不是許可權,當使用者以sysdba身份登陸資料庫時,登陸使用者都會變成sys。sysdba身份登陸可以開啟,關閉資料庫,建立spfile,對資料庫進行恢復操作等,而這些是dba角色無法...

sysdba進行匯出和匯入

sysdba進行匯出和匯入 我們在一些相關的書籍或是網上的相關資料對oracle exp備份 匯出 匯入備份 使用sysdba進行匯出和匯入的實際操作步驟都有相關的介紹,以下的文章就對oracle exp備份的實際操作步驟的本人的 1.命令列方式 a windows平台 c exp as sysdb...