oracle許可權整理檔案

bitifi發表於2015-09-22
oracle 角色和許可權的關係檢視
例如:要檢視 scott 具有的角色,可查詢 dba_role_privs;   
SQL> select * from dba_role_privs where grantee='SCOTT';   
  
//查詢 orale 中所有的系統許可權,一般是dba   
select * from system_privilege_map order by name;   
//查詢 oracle 中所有物件許可權,一般是dba   
select distinct privilege from dba_tab_privs;   
//查詢 oracle 中所有的角色,一般是dba   
select * from dba_roles;   
//查詢資料庫的表空間   
select tablespace_name from dba_tablespaces;   
  
問題 1:如何查詢一個角色包括的許可權?   
       a.一個角色包含的系統許可權   
         select * from dba_sys_privs where grantee='角色名'   


         select * from dba_sya_privs where grantee='COONNECT'; connect要大寫
         另外也可以這樣檢視:   
         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 資料庫的所有系統資訊。透過查詢資料字典可以取得以 
下系統資訊:比如   
1.物件定義情況   
2.物件 佔用空間大小   
3.列資訊   
4.約束資訊   
檢視使用者、許可權、角色的命令和檢視
a
dba_role_privs
dba_tab_privs
dba_sys_privs 


1.檢視所有使用者: 
select * from dba_users; 
select * from all_users; 
select * from user_users; 
2.檢視使用者系統許可權: 
select * from dba_sys_privs; 
select * from session_privs; 
select * from user_sys_privs; 
3.檢視使用者物件許可權: 
select * from dba_tab_privs; 
select * from all_tab_privs; 
select * from user_tab_privs; 
4.檢視所有角色: 
select * from dba_roles; 
5.檢視使用者所擁有的角色: 
select * from dba_role_privs; 
select * from user_role_privs; 
b
概述
   與許可權,角色相關的檢視大概有下面這些:
   DBA_SYS_PRIVS: 查詢某個使用者所擁有的系統許可權
   USER_SYS_PRIVS:  查詢當前使用者所擁有的系統許可權
   SESSION_PRIVS:    查詢當前使用者所擁有的全部許可權
   ROLE_SYS_PRIVS:   查詢某個角色所擁有的系統許可權
   注意: 要以SYS使用者登陸查詢這個檢視,否則返回空.
   ROLE_ROLE_PRIVS:    當前角色被賦予的角色
   SESSION_ROLES:      當前使用者被啟用的角色
   USER_ROLE_PRIVS:   當前使用者被授予的角色
   另外還有針對表的訪問許可權的檢視:
   TABLE_PRIVILEGES
   ALL_TAB_PRIVS   
   ROLE_TAB_PRIVS:     某個角色被賦予的相關表的許可權
oracle與使用者角色許可權相關的檢視 
Oracle 本身的資料字典設計我個人覺得很合理, 因為DBA_xxx, ALL_xxx,USER_xxx  讓人一看大概就知道這個檢視是幹什麼用的. 本文簡要總結了一下與許可權,角色相關的檢視.


一. 概述
   與許可權,角色相關的檢視大概有下面這些: 


1、DBA_SYS_PRIVS:   查詢某個使用者所擁有的系統許可權。 
2、USER_SYS_PRIVS:  查詢當前使用者所擁有的系統許可權。 
3、SESSION_PRIVS:    查詢當前使用者所擁有的全部許可權。 
4、ROLE_SYS_PRIVS:  查詢某個角色所擁有的系統許可權。
   注意: 要以SYS使用者登陸查詢這個檢視,否則返回空。 


5、ROLE_ROLE_PRIVS:    當前角色被賦予的角色 
6、SESSION_ROLES:      當前使用者被啟用的角色 
7、USER_ROLE_PRIVS:   當前使用者被授予的角色 


針對表的訪問許可權的檢視: 


       TABLE_PRIVILEGES 


       ALL_TAB_PRIVS   


       ROLE_TAB_PRIVS: 某個角色被賦予的相關表的許可權 
SQL> select * from user_sys_privs;               --檢視直接授予使用者的系統許可權


      SQL> select * from user_role_privs;              --使用者有哪些角色


      SQL> select * from user_tab_privs;               --檢查一個使用者被授予和授予其他使用者的物件級許可權


      SQL> select * from dba_roles;                    --查詢系統中的角色


      SQL> select * from dba_sys_privs;                --查詢角色的權利


      SQL> select * from dba_role_privs;               --查詢角色是誰定義的


      SQL> select * from column_privileges;            --


      SQL> select * from role_role_privs;              --查詢角色的授予和被授予關係


      SQL> select * from role_sys_privs;               --查詢角色被授予的系統級許可權


---把一個使用者的所有表查詢許可權給另一個使用者
select 'grant select on '||owner||'.'||object_name|| ' to user' 
from dba_objects
where object_type='TABLE'  and onwer='user';


select 'grant select on '||owner||'.'||object_name|| 'to user;' from dba_objects where object_type='PROCEDURE';




      SQL> select * from role_tab_privs;               --查詢角色的物件級許可權










表空間配額和UNLIMITED TABLESPACE許可權 (2012-07-20 20:09:08)轉載▼
標籤: oracle unlimited tablespace quota resource 分類: ORACLE
對於一個新建的使用者,如果沒有分配給unlimited tablespace系統許可權的使用者,必須先給他們指定限額,之後他們才能在表空間中建立物件,限額可以是:
A、以兆位元組或者千位元組為單位的特定值
B、無限制的


限額是指定標空間中允許的空間容量,預設的情況下,使用者在任何表空間中都是沒有限額的,可以使用一下三個選項來為使用者提供表空間限額:
A、無限制的:允許使用者最大限度的使用表空間中的可用空間
B、值:使用者可以使用的表空間,以千位元組或者兆位元組為單位。這並不能保證會為使用者保留該空間。因此此值可能大於或小於表看三毛中的當前可用表空間
C、UNLIMITED TABLESPACE系統許可權:此係統許可權會覆蓋所有的單個表空間限額,並向使用者提供所有表空間(包括SYSTEM和SYSAUX)的無限制限額(注:授予resource角色的時候也會授予此許可權)
一定不要為使用者提供system或sysaux表空間的限額。通常,只有sys和system使用者才能在system或sysaux表空間中建立物件。
對於分配的臨時表空間或臨時還原表空間則不需要限額。


如果需要為一個使用者指定一個限額,可以有兩種方法:
1、在建立使用者的時候指定限額:
CREATE USER ABC IDENTIFIED BY ABC
DEFAULT TABLESPACE TEST
TEMPORARY TABLESPACE TEMP
QUOTA 3M ON TEST;
2、在建立使用者完成之後對使用者限額進行指定:
CREATE USER BCD IDENTIFIED BY BCD
DEFAULT TABLESPACE TEST;
ALTER USER BCD QUOTA 3M ON TEST;
3、更改使用者的表空間限額:
全域性:
grant unlimited tablespace to abc;
針對某個表空間:
alter user abc quota unlimited on test;
回收:
revoke unlimited tablespace from abc;
alter user abc quota 0 on test;


--舉例,使一個使用者只能訪問自已預設表空間
第一,回收unlimited tablespace許可權
revoke unlimited tablespace from username
alter user username quota unlimited on tablespace_name


與表空間限額先關的資料字典:
dba_ts_quotas:DBA_TS_QUOTAS describes tabelspace quotas for all users
user_ts_quotas:USER_TS_QUOTAS describes tablespace quotas for the current user. This view does not display the USERNAME column;








來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30496894/viewspace-1806071/,如需轉載,請註明出處,否則將追究法律責任。

相關文章