詳解oracle數據字典和性能視圖|附常用命令

一、概念

數據字典是oracle數據庫中重要的組成部分,記錄了數據庫的一些系統信息。(靜態信息)

動態性能視圖記載了例程啟動後的信息.(動態信息)

數據字典記錄了數據的系統信息,是隻讀表和動態視圖的集合,數據字典的所有者為sys用戶,用戶只能在數據字典上執行查詢操作,其維護和修改是由系統自動完成的。(可摸不可動)

詳解oracle數據字典和性能視圖|附常用命令


二、數據字典

詳解oracle數據字典和性能視圖|附常用命令

數據字典由四部分組成:

1)內部表(X$): Oracle的核心,官網不做說明, Oracle通過大量X$建立起大量視圖,僅供用戶select。

2)數據字典表: 用以存儲表、索引、約束以及其他數據庫結構信息,通常以$結尾,如tab$,obj$,ts$,aud$等。

3)動態性能表(V$): 實時更新反應當前的數據庫狀態,官網對V$視圖有詳盡的說明。

4)數據字典視圖: 在X$表和數據字典表上創建,通常分為三類dba_, all_, user_.

詳解oracle數據字典和性能視圖|附常用命令

user_tables: 用於顯示當前用戶所擁有的所有表,它只返回用戶所對應方案的所有表

比如:select table_name from user_tables;

all_tables: 用於顯示當前用戶可以訪問的所有表,它不僅會返回當前用戶方案的所有表,還會返回當前用戶可以訪問的其它方案的表

比如:select table_name from all_tables;

dba_tables: 它會顯示所有方案擁有的數據庫表。但是查詢這種數據庫字典視圖,要求用戶必須是dba角色或是有select any table 系統權限。

例如:當用system用戶查詢數據字典視圖dba_tables時,會返回system,sys,scott...方案所對應的數據庫表。


三、用戶名,權限,角色

在建立用戶時,oracle會把用戶的信息存放到數據字典中,當給用戶授予權限或是角色時,oracle會將權限和角色的信息存放到數據字典。

通過查詢dba_users可以顯示所有數據庫用戶的詳細信息;

通過查詢數據字典視圖dba_sys_privs,可以顯示用戶所具有的系統權限;

通過查詢數據字典視圖dba_tab_privs,可以顯示用戶具有的對象權限;

通過查詢數據字典dba_col_privs 可以顯示用戶具有的列權限;

通過查詢數據庫字典視圖dba_role_privs 可以顯示用戶所具有的角色。


問題1:如何查詢一個角色包括的權限?

a.一個角色包含的系統權限

select * from dba_sys_privs where grantee='角色名'

另外也可以這樣查看:

select * from role_sys_privs where role='角色名'

b.一個角色包含的對象權限

select * from dba_tab_privs where grantee='角色名'

問題2:oracle究竟有多少種角色?

SQL> select * from dba_roles;

問題3:如何查看某個用戶,具有什麼樣的角色?

select * from dba_role_privs where grantee='用戶名'

顯示當前用戶可以訪問的所有數據字典視圖。

select * from dict where comments like '%grant%';

顯示當前數據庫的全稱

select * from global_name;


四、動態性能視圖

動態性能視圖用於記錄當前例程的活動信息,當啟動oracle server時,系統會建立動態性能視圖;當停止oracle server時,系統會刪除動態性能視圖。

oracle的所有動態性能視圖都是以v_$開始的,並且oracle為每個動態性能視圖都提供了相應的同義詞,並且其同義詞是以V$開始的,例如v_$datafile的同義詞為v$datafile;動態性能視圖的所有者為sys。

一般情況下,由dba或是特權用戶來查詢動態性能視圖。

詳解oracle數據字典和性能視圖|附常用命令

oracle最重要的九大性能視圖


篇幅有限,關於oracle數據字典和性能視圖就介紹到這了,oracle最重要的九大性能視圖也只能後面再分享了,後期會發更多關於運維DBA和devops內容,感興趣的朋友可以關注下!

詳解oracle數據字典和性能視圖|附常用命令


分享到:


相關文章: