1. 程式人生 > >oracle 18c 18.3 學習之三 dba_users cdb_users

oracle 18c 18.3 學習之三 dba_users cdb_users

os: centos 7.4
db: oracle 18c(18.3)

有了cdb,pdb之後,也多了一些檢視,下面簡單分析下 dba_users cdb_users 這兩個資料字典檢視,其它類似的檢視也是一樣的情況。

dba_users

檢視下dba_users的定義,下面貼了些重點程式碼。

     from sys.user$ u
          left outer join sys.resource_group_mapping$ cgm
          on (cgm.attribute = 'ORACLE_USER' and cgm.status = 'ACTIVE' and
              cgm.value = u.name) left outer join sys.ts$ ltts
                                       on (u.spare9 = ltts.ts#),
          sys.ts$ dts, sys.ts$ tts, sys.profname$ p,
          sys.user_astatus_map m, sys.profile$ pr, sys.profile$ dp

可見 dba_users 獲取的都是都是底層的資料字典表,所以 dba_users 等被成為資料字典檢視。
不管登入的是 CDB(CDB$ROOT) 還是某個 PDB,都只顯示該 container 的使用者資訊。

cdb_users

一樣貼重點程式碼

FROM CONTAINERS("SYS"."DBA_USERS") k;

可以看出是從多個 CDB 獲取 dba_users。

如果以 sys/system 登入 CDB(CDB R O

O T ) c d b
u
s e r s ( C D B ROOT) 後,查詢 cdb_users ,就會把所有的 容器資料庫(包括 CDB ROOT)使用者返回,通過 con_id 區別。
如果登入某個 PDB 後,檢視 cdb_users,只會顯示該 PDB 的資料庫使用者資訊,和查詢 dba_users 是一樣的效果。

參考:
https://docs.oracle.com/en/database/oracle/oracle-database/18/refrn/DBA_USERS.html#GUID-309FCCB2-2E8D-4371-9FC5-7F3B10E2A8C0