資料字典和動態效能檢視
資料字典是oracle資料庫中最重要的組成部分,它提供了資料庫的一些系統資訊
動態效能檢視記載了常式啟動後的相關資訊。
一、資料字典
資料字典記錄了資料庫的系統資訊,它是唯讀表和視圖的集合,資料字典的所有者為sys使用者。
使用者只能在資料字典上執行查詢操作(select語句),而其維護和修改是由系統自動完成的。
資料字典的組成:資料字典包括資料字典基表和資料字典視圖,其中基表格儲存體資料庫的基本資料(可以理解為待用資料),普通使用者不能直接存取資料字典的基表。資料字典視圖是基於資料字典基表所建立的視圖,普通使用者可以通過查詢資料字典視圖取得系統資訊,資料字典視圖主要包括user.xxx,
all.xxx, dba,xxx三種類型。
*user_tables
用於顯示目前使用者的所擁有的所有表,它只返回使用者所對應方案的所有表。
select table_name from user_tables;
*all_tables
用於顯示目前使用者可以訪問到的所有表,它不僅會返回目前使用者方案的所有表,還會返回目前使用者可以訪問到的其它方案的表。
select table_name from all_tables;
*使用者名稱,許可權,角色
在建立使用者時,oracle會把使用者的資訊存放到資料字典中,當給使用者授予許可權或是角色時,oracle會將許可權和角色的資訊存放到資料字典,通過查詢dba.users可以顯示所有資料庫使用者的詳細資料;
通過查詢資料字典視圖dba_sys_privs,可以顯示使用者所具有的系統許可權
通過查詢資料字典視圖dba_tab_privs可以顯示使用者具有的對象許可權
通過查詢資料字典dba_col_privs可以顯示使用者具有的列許可權
通過查詢資料字典視圖dba_role_privs可以顯示使用者所具有的角色
查詢看scott具有的角色,可以查詢dba_role_privs;
//1、先查看一下dba_role_privs表結構
desc dba_role_privs;
Name Type Nullable Default Comments
------------ ------------ -------- ------- -------------------------------------------------
GRANTEE VARCHAR2(30) Y Grantee Name, User or Role receiving the grant
GRANTED_ROLE VARCHAR2(30) Granted role name
ADMIN_OPTION VARCHAR2(3) Y Grant was with the ADMIN option
DEFAULT_ROLE VARCHAR2(3) Y Role is designated as a DEFAULT ROLE for the user
//2、
select * from dba_role_privs where grantee='SCOTT';
GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE
------------------------------ ------------------------------ ------------ ------------
SCOTT RESOURCE NO YES
SCOTT CONNECT NO YES
二、角色和許可權
一個角色裡擁有很多許可權,其實角色就是由許可權構成的。角色可以分配給使用者,那麼該使用者就擁有了該角色的許可權。一個使用者可能有多個角色。
1、如何查詢一個角色包含的許可權?
//這個問題包含了兩小問題:
a、一個角色包含的系統許可權;
select * from dba_role_privs where grantee='DBA' //DBA是使用者名稱
或者是:
select * from dba_sys_privs where role='DBA'
b、一個角色包含的對象許可權
select * from dba_tab_privs where grantee='DBA';
當然,無論是查看某個角色的系統許可權和對象許可權都可以通過pl/sql developer 這個工具直接查看。
2、oracle究竟有多少種角色?
select * from dba_roles;
3、如何查看某個使用者具有什麼角色?
select * from dba_role_privs where grantee='使用者名稱';
//查詢oracle中所有的系統許可權,一般是dbaselect * from system_privilege_map order by name;//查詢oracle中所有的角色,一般是dbaselect * from dba_roles;//查詢oracle中所有對象許可權,一般是dba。select distinct privilege from dba_tab_privs;//查詢資料庫的資料表空間select tablespace_name from dba_tablespaces;
提示:查詢這些資訊最好是用system使用者登入,普通使用者查詢這些可能不全。
.顯示目前使用者可以訪問的所有資料字典視圖
select * from dict where comments like '%grant%';
.顯示當前資料庫的全稱
select * from global_name;
*其它說明
資料字典記錄有oracle資料庫的所有系統資訊,通過查詢資料字典可以取得以下系統資訊:
對象定義情況
對象佔用空間大小
列資訊
約束資訊
...
這些資訊都可以在pl/sql developerg工具查到。