oracle數據庫的權限系統分爲系統權限與對象權限。系統權限( database system privilege )可讓用戶執行特定的命令集。例如,create table權限容許用戶建立表,grant any privilege 權限容許用戶授予任何系統權限。對象權限( database object privilege )可讓用戶可以對各個對象進行某些操做。例如delete權限容許用戶刪除表或視圖的行,select權限容許用戶經過select從表、視圖、序列(sequences)或快照(snapshots)中查詢信息。 數據庫
每一個oracle用戶都有一個名字和口令,並擁有一些由其建立的表、視圖和其餘資源。oracle角色(role)就是一組權限(privilege)(或者是每一個用戶根據其狀態和條件所需的訪問類型)。用戶能夠給角色授予或賦予指定的權限,而後將角色賦給相應的用戶。一個用戶也能夠直接給其餘用戶受權。 session
1、建立用戶 oracle
oracle內部有兩個建好的用戶:system和sys。用戶可直接登陸到system用戶以建立其餘用戶,由於system具備建立別 的用戶的 權限。 在安裝oracle時,用戶或系統管理員首先能夠爲本身創建一個用戶。例 如 : ide
Sql代碼 spa
create user user01 identified by u01; orm
該命令還能夠用來設置其餘權限,詳細狀況參見自學資料。要改變一個口令,可使用alter user命令: 對象
<span style="white-space: pre;"> alter user user01 identified by usr01;</span> 索引
<span style="white-space: pre;"><span style="white-space: normal;"> </span> </span> 資源
如今user01的口令已由「u01」改成「usr01」。 get
除了alter user命令之外,用戶還可使用password命令。若是使用password命令,用戶輸入的新口令將不在屏幕上顯示。有dba特權的用戶能夠經過password命令改變任何其餘用戶的口令;其餘用戶只能改變本身的口令。
當用戶輸入password命令時,系統將提示用戶輸入舊口令和新口令,以下所示:
password
changing password for user01
old password:
new password:
retype new password:
當成功地修改了口令時,用戶會獲得以下的反饋:
password changed
二 、刪除用戶
刪除用戶,可使用drop user命令,以下所示:
drop user user01;
若是用戶擁有對象,則不能直接刪除,不然將返回一個錯誤值。指定關鍵字cascade,可刪除用戶全部的對象,而後再刪除用戶。下面的例子用來刪除用戶與其對象:
drop user user01 cascade;
三 、3種標準角色
qracle爲了兼容之前的版本,提供了三種標準的角色(role):connect、resource和dba。
1. connect role(鏈接角色)
臨時用戶,特別是那些不須要建表的用戶,一般只賦予他們connectrole。connect是使用oracle的簡單權限,這種權限只有在對其餘用戶的表有訪問權時,包括select、insert、update和delete等,纔會變得有意義。擁有connect role的用戶還可以建立表、視圖、序列(sequence)、簇(cluster)、同義詞(synonym )、會話(session)和與其餘數據庫的鏈(link)。
2. resource role(資源角色)
更可靠和正式的數據庫用戶能夠授予resource role。resource提供給用戶另外的權限以建立他們本身的表、序列、過程(procedure)、觸發器(trigger)、索引(index)和簇(cluster)。
3. dba role(數據庫管理員角色)
dba role擁有全部的系統權限----包括無限制的空間限額和給其餘用戶授予各類權限的能力。system由dba用戶擁有。下面介紹一些dba常用的典型權限。
(1)grant(受權)命令
下面對剛纔建立的用戶user01受權,命令以下:
grant connect, resource to user01;
(2)revoke(撤消)權限
已授予的權限能夠撤消。例如撤消(1)中的受權,命令以下:
revoke connect, resource from user01;
一個具備dba角色的用戶能夠撤消任何別的用戶甚至別的dba的connect、resource 和dba的其餘權限。固然,這樣是很危險的,所以,除非真正須要,dba權限不該隨便授予那些不是很重要的通常用戶。 撤消一個用戶的全部權限,並不意味着從oracle中刪除了這個用戶, 也不會破壞用戶建立的任何表;只是簡單禁止其對這些表的訪問。其餘要訪問這些表的用戶能夠象之前那樣地訪問這些表。
4、建立角色
除了前面講到的三種系統角色----connect、resource和dba,用戶還能夠在oracle建立本身的role。用戶建立的role能夠由表或系統權限或二者的組合構成。爲了建立role,用戶必須具備create role系統權限。下面給出一個create role命令的實例:
create role student;
這條命令建立了一個名爲student的role。
一旦建立了一個role,用戶就能夠給他受權。給role受權的grant命令的語法與對對用戶的語法相同。在給role受權時,在grant命令的to子句中要使用role的名稱,以下所示:
grant select on class to student;
如今,擁有student 角色的全部用戶都具備對class 表的select權限。
5、刪除角色
要刪除角色,可使用drop role命令,以下所示:
drop role student;
指定的role連同與之相關的權限將從數據庫中所有刪除。
6、<span style="font-family: helvetica, tahoma, arial, sans-serif; font-size: 14px; line-height: 25px;">刪除表的注意事項</span>
<span style="font-family: helvetica, tahoma, arial, sans-serif; font-size: 14px; line-height: 25px;">在刪除一個表中的所有數據時,須使用</span>
Sql代碼
truncate table 表名
由於用drop table,delete * from 表名時,tablespace表空間該表的佔用空間並未釋放,反覆幾回drop,delete操做後,該tablespace上百兆的空間就被耗光了。