Oracle權限大全


  在開發系統的過程中,不可避免的需要和其他的系統進行交互,這里一般采用接口的方式來進行交互,但是也有很多時候需要我們去創建用戶和視圖來供對方通過dblink的方式查詢我們系統中的數據。這里就牽扯到了授權問題,應該給創建給對方使用的用戶多大的權限呢。

  Oracle權限允許用戶訪問屬於其它用戶的對象或執行程序,Oracle系統提供三種權限:Object 對象級、System 系統級、Role 角色級。這些權限可以授予給用戶、特殊用戶public或角色,如果授予一個權限給特殊用戶"Public"(用戶public是oracle預定義的,每個用戶享有這個用戶享有的權限),那么就意味作將該權限授予了該數據庫的所有用戶。
  對管理權限而言,角色是一個工具,權限能夠被授予給一個角色,角色也能被授予給另一個角色或用戶。用戶可以通過角色繼承權限,除了管理權限外角色服務沒有其它目的。權限可以被授予,也可以用同樣的方式撤銷。

權限分類
1、系統權限:系統規定用戶使用數據庫的權限。(系統權限是對用戶而言)。
2、實體權限:某種權限用戶對其它用戶的表或視圖的存取權限。(是針對表或視圖而言的)。
系統權限:
DBA: 擁有全部特權,是系統最高權限,只有DBA才可以創建數據庫結構。
RESOURCE:擁有Resource權限的用戶只可以創建實體,不可以創建數據庫結構。
CONNECT:擁有Connect權限的用戶只可以登錄Oracle,不可以創建實體,不可以創建數據庫結構。
對於普通用戶:授予connect, resource權限。
對於DBA管理用戶:授予connect,resource, dba權限。
系統權限授權命令:
系統權限只能由DBA用戶授出:sys, system(最開始只能是這兩個用戶)
授權命令:SQL> grant connect, resource, dba to 用戶名1 [,用戶名2]...;
注:普通用戶通過授權可以具有與system相同的用戶權限,但永遠不能達到與sys用戶相同的權限,system用戶的權限也可以被回收。 
例: 
SQL> connect system/manager
SQL> Create user user50 identified by user50;
SQL> grant connect, resource to user50;

查詢用戶擁有哪里權限: 
SQL> select * from dba_role_privs;
SQL> select * from dba_sys_privs;
SQL> select * from role_sys_privs; 
查自己擁有哪些系統權限
SQL> select * from session_privs; 
刪除用戶
SQL> drop user 用戶名 cascade;  //加上cascade則將用戶連同其創建的東西全部刪除
系統權限傳遞:
增加WITH ADMIN OPTION選項,則得到的權限可以傳遞。
SQL> grant connect, resorce to user50 with admin option;  //可以傳遞所獲權限。
系統權限回收:系統權限只能由DBA用戶回收
SQL> Revoke connect, resource from user50; 
說明: 
1)如果使用WITH ADMIN OPTION為某個用戶授予系統權限,那么對於被這個用戶授予相同權限的所有用戶來說,取消該用戶的系統權限並不會級聯取消這些用戶的相同權限。
2)系統權限無級聯,即A授予B權限,B授予C權限,如果A收回B的權限,C的權限不受影響;系統權限可以跨用戶回收,即A可以直接收回C用戶的權限。

實體權限:
select, update, insert, alter, index, delete, all  //all包括所有權限
execute  //執行存儲過程權限
user01:
SQL> grant select, update, insert on product to user02;
SQL> grant all on product to user02;
user02:
SQL> select * from user01.product; 
// 此時user02查user_tables,不包括user01.product這個表,但如果查all_tables則可以查到,因為他可以訪問。
將表的操作權限授予全體用戶:
SQL> grant all on product to public;  // public表示是所有的用戶,這里的all權限不包括drop。
實體權限數據字典
SQL> select owner, table_name from all_tables; // 用戶可以查詢的表
SQL> select table_name from user_tables;  // 用戶創建的表
SQL> select grantor, table_schema, table_name, privilege from all_tab_privs; // 獲權可以存取的表(被授權的)
SQL> select grantee, owner, table_name, privilege from user_tab_privs;    // 授出權限的表(授出的權限)
DBA用戶可以操作全體用戶的任意基表(無需授權,包括刪除)

下面就是oracle的權限一覽表:

權限 所能實現的操作
分析  
ANALYZE ANY  分析數據庫中的任何表、簇或索引
審計  
AUDIT ANY  審計數據庫中的任何模式對象
AUDIT SYSTEM  啟用與停用語句和特權的審計選項
 
CREATE CLUSTER  在自有的模式中創建一個簇
CREATE ANY CLUSTER  在任何一個模式中創建一個簇;操作類似於CREATE ANY TABLE
ALTER ANY CLUSTER  改變數據庫中的任何一個簇
DROP ANY CLUSTER  刪除數據庫中的任何一個簇
數據庫  
ALTER DATA BASE  改變數據庫;不管操作系統的特權,經由Oracle把文件添加到操作系統中
數據庫鏈接  
CREATE DATABASE LINK  在自有模式中創建專用數據庫鏈接
索引  
CREATE ANY INDEX  在任何表的任何模式中創建一條索引
ALTER ANY INDEX  改變數據庫中的任何索引
DROP ANY INDEX  刪除數據庫中的任何索引
 
CREATE LIBRARY  在自有模式中創建調出庫
CREATE ANY LIBRARY  在任何模式中創建調出庫
DROP LIBRARY  刪除自有模式中的調出庫
DROP ANY LIBRARY  刪除任何模式中的調出庫
特權  
GRANT ANY PRIVILEGE  授予任何系統特權(不包括對象特權)
過程  
CREATE PROCEDURE  在自有模式中創建存儲的過程、函數和包
CREATE ANY PROCEDURE  在任何模式中創建存儲的過程、函數和包(這要求用戶還要有ALTER ANY TABLE BACKUP ANY TA B LE DROP ANY TABLE SELECT ANY TABLE INSERT ANY TABLE UPDATE ANY TABLE DELETE ANY TABLE GRANT ANY TABLE 特權 
ALTER ANY PROCEDURE  編譯任何模式中的任何存儲的過程、函數或包
DROP ANY PROCEDURE  刪除任何模式中的任何存儲的過程、函數或包
EXECUTE ANY PROCEDURE  執行任何過程或函數(獨立的或成組的),或在任何模式中引用任何包變量
環境資源文件  
CREATE PROFILE  創建環境資源文件
ALTER PROFILE  改變數據庫中的任何環境資源文件
DROP PROFILE  刪除數據庫中的任何環境資源文件
ALTER RESOURCE COST  設置所有的用戶會話中使用的資源開銷
特權 所能實現的操作
公共數據庫鏈接  
CREATE PUBLIC DATABASE LINK  創建公共數據庫鏈接
DROP PUBLIC DATABASE LINK  刪除公共數據庫鏈接
公共同義詞  
CREATE PUBLIC SYNONYM  創建公共同義詞
DROP PUBLIC SYNONYM  刪除公共同義詞
角色  
CREATE ROLE  創建角色
ALTER ANY ROLE  改變數據庫中的任何一個角色
DROP ANY ROLE  刪除數據庫中的任何一個角色
GRANT ANY ROLE  授權數據庫中的任何一個角色
回滾段  
CREATE ROLLBACK SEGMENT  創建回滾段
ALTER ROLLBACK SEGMENT  改變回滾段
DROP ROLLBACK SEGMENT  刪除回滾段
會話  
CREATE SESSION  連接到數據庫
ALTER SESSION  發出A LTER SESSION 語句
RESTRICTED SESSION  當數據庫利用STARTUP RESTRICT 啟動時進行連接(OSOPER
OSDBA角色包含此特權)
序列  
CREATE SEQUENCE  在自有模式中創建序列
CREATE ANY SEQUENCE  在任何模式中創建任何序列
ALTER ANY SEQUENCE  在任何模式中改變任何序列
DROP ANY SEQUENCE  在任何模式中刪除任何序列
SELECT ANY SEQUENCE  在任何模式中引用任何序列
快照  
CREATE SNAPSHOT  在自有模式中創建快照(用戶還必須具有C R E ATE TA B L E 特權)
CREATE  ANY SNAPSHOT  在任何模式中創建快照(用戶還必須具有CREATE ANY TABLE特權)
ALTER SNAPSHOT  改變任何模式中的任何快照
DROP ANY SNAPSHOT  刪除任何模式中的任何快照
同義詞  
CREATE SYNONYM  在自有模式中創建同義詞
CREATE ANY SYNONYM  在任何模式中創建任何同義詞
DROP ANY SYNONYM  在任何模式中刪除任何同義詞
系統  
ALTER SYSTEM  發出ALTER SYSTEM 語句
 
CREATE TABLE  在自有模式中創建表。還使被授權者能在自有模式下的表中創建索引,包
括那些用於完整性約束的索引(被授權者必須有表空間的定額或UNLIMITED TABLESPACE 特權)
CREATE ANY TABLE  在任何模式中創建表(假如被授權者有CREATE ANY TABLE 特權並在
另一個用戶模式中創建了一張表,那么擁有者必須在那個表空間上有空間定額。表的擁有者不必具有CREAT [ANY] TABLE 特權)
ALTER ANY TABLE  改變任何模式中的任何表並編譯任何模式中的任何視圖
BACKUP ANY TABLE  在任何模式中使用表的導出工具執行一個增量導出操作
DROP ANY TABLE  刪除或截斷任何模式中的任何表
LOCK ANY TABLE  鎖定任何模式中的任何表或視圖
特權 所能實現的操作
COMMENT ANY TABLE  對任何模式中的任何表、視圖或列進行注釋
SELECT ANY TABLE  對任何模式中的任何表、視圖或快照進行查詢
INSERT ANY TABLE  把行插入到任何模式中的任何表或視圖中
UPDATE ANY TABLE  修改任何模式中的任何表或視圖中的行
DELETE ANY TABLE  刪除任何模式中的任何表或視圖中的行
表空間  
CREATE TABLESPACE  創建表空間;不管用戶有何操作系統特權,經由Oracle把文件添加到操
作系統中
ALTER TABLESPACE  改變表空間;不管用戶有何操作系統特權,經由Oracle把文件添加到操
作系統中
MANAGE TABLESPACE  使任何表空間脫機,使任何表空間聯機,開始和結束對任何表空間的備份
DROP TABLESPACE  刪除表空間
UNLIMITED TABLESPACE  使用任何沒有數量限制的表空間。此特權忽略了所分配的任何具體定額。
假如被取消的話,被授權者的模式對象仍然保留,但是進一步的表空間分配被拒絕,除非這一分配是具體的表空間定額允許的。此系統特權僅可以授予用戶,而不授予角色。一般而言,應分配具體的表空間定額,而不授予此系統特權
事務  
FORCE TRANSACTION  強迫提交或回滾本地數據庫中懸而未決的自有的分布式事務
FORCE ANY TRANSACTION  強迫提交或回滾本地數據庫中懸而未決的任何分布式事務
觸發器  
CREATE TRIGGER  在自有模式中創建觸發器
CREATE ANY TRIGGER  在任何模式中創建與任何模式的任何表相關的任何觸發器
ALTER ANY TRIGGER  啟用、停用或編譯任何模式中的任何觸發器
DROP ANY TRIGGER  刪除任何模式中的任何觸發器
用戶  
CREATE ANY USER  創建用戶;分配任意表空間上的定額,設置缺省和臨時表空間,指定一個
環境資源文件(在CREATE USER 語句中)
BECOME ANY USER  成為另一個用戶(這是任何一個執行完全數據庫導入的用戶所需要的)
ALTER USER  改變其他用戶:修改任意用戶的口令或驗證方法,分配表空間定額,設置
缺省或臨時表空間,在ALTER USER 語句中指定環境資源文件與缺省角色(不必改變自有口令)
DROP USER  刪除另一個用戶
視圖  
CREATE VIEW  在自有模式中創建視圖
CREATE ANY VIEW  在任意模式中創建視圖。要在另一個用戶模式中創建視圖,你必須具有
CREATE ANY VIEW 特權,擁用者必須在該視圖引用的對象上具有所需的特權


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM