oracle privilege不得不說的11一個資料字典檢視
oracle privilege不得不說的11一個資料字典檢視
dba_roles
資料庫定義的所有的角色。
SQL> select count(*) from dba_roles;
COUNT(*)
----------
41
我本沒有建立什麼角色,oracle預置了很多角色,但是oracle不建議簡單依賴這些
預定義的角色,而應該根據自己需求自定義角色。
role_tab_privs
分配給角色的表許可權。這裡的包含的角色是可分配給使用者的。
(Information is provided only about roles to which the user has access.)
表結構解釋:
role:角色名。
owner:物件的屬主。
table_name:物件名。
column_name:列名,如果適用的話。
privilege:授予該角色的物件特權。
grantable:如果該角色帶有with admin option,該列是yes,否則是no。
檢視OEM_MONITOR的表許可權。下面是查詢的部分輸出。
SQL> select role,table_name,privilege,grantable
2 from role_tab_privs
3 where role='OEM_MONITOR';
ROLE TABLE_NAME PRIVILEGE GRANTABLE
------------------------------ ------------------------------ ---------------------------------------- ---------
OEM_MONITOR MGMT_HISTORY SELECT NO
OEM_MONITOR BSLN_OBSERVATION_SET EXECUTE NO
OEM_MONITOR BSLN_TIMEGROUPS SELECT NO
OEM_MONITOR BSLN_STATISTICS SELECT NO
OEM_MONITOR BSLN EXECUTE NO
OEM_MONITOR MGMT_BSLN_DATASOURCES SELECT NO
OEM_MONITOR MGMT_BSLN_THRESHOLD_PARMS SELECT NO
role_sys_privs
角色擁有的系統許可權
先建立一個測試角色
SQL> create role testrole;
Role created
SQL> grant create session,alter session,create table,
2 create view,create synonym,create sequence
3 to testrole;
Grant succeeded
查詢role_sys_privs確定角色testrole的系統許可權。
SQL> select * from role_sys_privs
2 where role='TESTROLE';
ROLE PRIVILEGE ADMIN_OPTION
------------------------------ ---------------------------------------- ------------
TESTROLE CREATE SESSION NO
TESTROLE CREATE SYNONYM NO
TESTROLE CREATE VIEW NO
TESTROLE CREATE SEQUENCE NO
TESTROLE CREATE TABLE NO
TESTROLE ALTER SESSION NO
dba_role_privs
檢視角色分配給什麼物件了。
先將testrole角色分配給oracle11g使用者。
SQL> grant testrole to oracle11g;
Grant succeeded
SQL> select * from dba_role_privs
2 where grantee='ORACLE11G';
GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE
------------------------------ ------------------------------ ------------ ------------
ORACLE11G TESTROLE NO YES
從查詢可以看出oracle11g使用者獲得了testrole角色的特權。
再建立一個角色用於測試
SQL> create role testrole1;
Role created
SQL> grant create trigger,create type,create procedure,create operator
2 to testrole1;
Grant succeeded
SQL> grant testrole1 to testrole;
Grant succeeded
查詢獲得testrole1角色的物件。
SQL> select grantee,granted_role
2 from dba_role_privs
3 where granted_role='TESTROLE1';
GRANTEE GRANTED_ROLE
------------------------------ ------------------------------
TESTROLE TESTROLE1
SYS TESTROLE1
注:以上5個檢視的查詢只有DBA才能執行。
user_sys_privs
檢視當前使用者獲得的系統特權。
SQL> show user
User is "oracle11g"
SQL> select * from user_sys_privs;
USERNAME PRIVILEGE ADMIN_OPTION
------------------------------ ---------------------------------------- ------------
ORACLE11G CREATE SESSION NO
不包括從角色獲得的系統特權.create session是最初建立使用者的時候授予的。
user_tab_privs
檢視當前使用者的物件特權
SQL> show user
User is "oracle11g"
SQL> select grantee,table_name,privilege,grantable
2 from user_tab_privs;
GRANTEE TABLE_NAME PRIVILEGE GRANTABLE
------------------------------ ------------------------------ ---------------------------------------- ---------
ORACLE11G EMPLOYEES SELECT NO
從查詢可以看出oracle11g擁有hr.employees的查詢特權。
user_role_privs
檢視使用者當前分配到的角色
SQL> select username,granted_role,admin_option,default_role
2 from user_role_privs;
USERNAME GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE
------------------------------ ------------------------------ ------------ ------------
ORACLE11G TESTROLE NO YES
oracle11g使用者獲得了角色testrole,並且該角色是oracle11g使用者的預設角色。
session_roles
當前使用者當前啟用的角色
SQL> select * from session_roles;
ROLE
------------------------------
TESTROLE
TESTROLE1
testrole1是分配給testrole的。
session_privs
檢視當前使用者具有的特權。
SQL> select * from session_privs;
PRIVILEGE
----------------------------------------
CREATE SESSION
ALTER SESSION
CREATE TABLE
CREATE SYNONYM
CREATE VIEW
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
role_tab_privs
檢視當前使用者具有的透過角色獲得的表特權。
先透過角色授權表特權.
SQL> create role tab_role;
Role created
SQL> grant select,update on hr.employees to tab_role;
Grant succeeded
SQL> grant tab_role to oracle11g;
Grant succeeded
檢視透過角色獲得的表特權
SQL> select role,table_name,privilege
2 from role_tab_privs;
ROLE TABLE_NAME PRIVILEGE
------------------------------ ------------------------------ ----------------------------------------
TAB_ROLE EMPLOYEES UPDATE
TAB_ROLE EMPLOYEES SELECT
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26110315/viewspace-716080/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 資料字典和資料字典檢視Oracle
- oracle常用資料字典.檢視Oracle
- 【檢視】oracle 資料字典檢視之 DICT / DICTIONARYOracle
- Oracle相關資料字典檢視Oracle
- 【轉載】Oracle資料字典檢視Oracle
- oracle資料字典表與檢視Oracle
- DBA常用的資料字典檢視(一)
- Oracle 資料庫字典 檢視 基表Oracle資料庫
- 檢視資料字典
- Oracle 常用資料字典表、檢視的總結Oracle
- Oracle 常用資料字典檢視、表的總結Oracle
- 【檢視】oracle 資料字典檢視之 “小”檢視 CAT, TAB, SEQ, SYN ...Oracle
- Oracle OCP(27):使用資料字典檢視管理物件Oracle物件
- 【VIEW】Oracle資料字典檢視之DICT_COLUMNSViewOracle
- Oracle ASM 相關的 檢視(V$) 和 資料字典(X$)OracleASM
- 常用的資料字典檢視和包
- 2.12 資料庫資料字典檢視資料庫
- 2.8.3 資料庫服務的資料字典檢視資料庫
- 使用資料字典檢視管理物件物件
- 【GP】透過資料字典檢視某個表的欄位
- 動態效能檢視與資料字典的區別之一
- 系統表和資料字典檢視
- 【檢視】oracle 資料字典檢視之 DBA_OBJECTS / ALL_OBJECTS / USER_OBJECTS(OBJ)OracleObject
- oracle 9i 查詢資料字典檢視慢案例分析Oracle
- 【ORACLE】物化檢視相關後設資料檢視欄位說明Oracle
- 用go開發了一個實時檢視mysql資料字典的小工具GoMySql
- Oracle許可權(二)許可權相關的動態效能檢視與資料字典檢視Oracle
- 巧用Oracle Discoverer中的資料字典檢查joinOracle
- 2.4.12 Step 11: 執行指令碼來構建資料字典檢視指令碼
- Oracle的資料字典Oracle
- oracle11g v$檢視view與字典dictionary官方連結OracleView
- oracle資料字典的一點總結!Oracle
- 11、Oracle中的檢視Oracle
- 資料字典和動態效能檢視基礎
- oracle 資料字典Oracle
- oracle常用的資料字典Oracle
- SQLServer訪問Oracle(通過同義詞-檢視-資料字典)出現的問題SQLServerOracle
- 檢視引數(parameter)的字典與資料庫字符集資料庫