http://wanwentao.blog.51cto.com/2406488/457603
建立和修改使用者
CREATE USER
語句將建立一個使用者。當一個使用者串連到ORACLE資料庫時,它必須被驗證。ORACLE中驗證有三種類型:
Database
external
Global
預設是資料庫驗證,當使用者串連到資料庫時,oracle將檢測使用者是否是資料庫的合法使用者,並且要提供正確的password.external驗證,oracle將只檢測使用者是否是合法使用者,password已經被網路或系統驗證了。global驗證也是只檢測是否是合法使用者,password由oraclesecurity
server驗證。
Database驗證使用者帳號
資料庫驗證帳號是張好的預設類型,也是最普通的類型。建立一個帳號是piyush,口令是welcome的帳號,只需執行下面的命令:
CREATE USE piyush IDENTIFIED BY welcome
piyush可以通過下面的語句將口令改變為saraswatt:
ALTER USER piyush IDENTIFIED BY saraswati;
外部驗證使用者帳號
使用者帳號進入資料庫時可以不提供口令,這種情況下代替資料庫識別口令的是用戶端作業系統。外部驗證帳號有時也叫OPS$帳號,當他們最初在oracle6開始介紹時,oracle帳號都有關鍵字首碼OPS$,這也就是為什麼init.ora
參數os_authent_prefix是OPS$--預設特徵與oracle6保持一致。os_authent_prefix定義的字串必須被預先處理為用於Oracle外部識別帳號的作業系統帳號名。建立作業系統使用者appl的語句是:
CREATE USER ops$appl IDENTIFIED EATERNALLY
但在通常情況下,os_authent_prefix將被設定為空白,像下面這樣:
CREATE USER appl IDENTIFIED EATERNALLY
這樣效果是一樣的,關鍵字IDENTIFIED EXTERNALLY告訴ORACLE這是一個外部識別帳號。
GLOBAL使用者帳號
GLOBAL類型的使用者帳號資料庫不檢測口令,而是由X.509目錄伺服器檢測口令。建立一個GLOBAL類型的使用者帳號的方法是:
CREATE USER scott IDENTIFIED GLOBALLY AS "CN=scott,OU=divisional,O=sybex,C=US"
關鍵字IDENTIFIED GLOBALLY AS表示建立的是一個GLOBAL類型的使用者帳號.
建立和更改使用者帳號
CREATE USER
用於建立使用者帳號和給使用者帳號的屬性賦值。ALTER USER用於更改使用者帳號和屬性。但CREATE USER語句必須包括使用者名稱和口令。
有部分屬效能用CREATER USER和ALTER USER語句設定,下面對是這些的屬性具體描述:
給使用者指派預設資料表空間
資料表空間(tablespace)是放置表、索引、叢等使用者物件的。如果在create user語句中沒有包含資料表空間,那麼預設的是系統資料表空間。
CREATE USER piyush IDENTIFIED BY saraswati
DEFAULTE TABLESPACE user_data;
ALTER USER manoj DEFAULTE TABLESPACE dev1_data;
給使用者指派暫存資料表空間
暫存資料表空間,顧名思義是臨時存放表、索引等使用者物件的臨時段。建立方法一樣
CREATE USER piyush IDENTIFIED BY saraswati
Temporary TABLESPACE user_data;
ALTER USER manoj Temporary TABLESPACE dev1_data;
給使用者指派資料表空間的使用定額
使用定額限制使用者在資料表空間中使用磁碟的數量。定額可以按位元組、KB、MB或者無限制來制定。
CREATE USER piyush IDENTIFIED BY saraswati
DEFAULT TABLESPACE user_data
QUOTA UNLIMITED ON user_data
QUOTA 20M ON tools;
ALTER USER manoj QUOTA 2500K ON tools;
給使用者指派一個簡表
簡表可以限制使用者在會話時消耗的資源。這些資源套件括:串連資料庫的時間,空閑時間,每次會話的邏輯讀資料的數量等等,預設的簡表對資源無限制。
CREATE USER piyush IDENTIFIED BY saraswati
PROFILE TABLESPACE user_data;
ALTER USER manoj Temporary TABLESPACE dev1_data;
為使用者響應指定角色
這個屬性只能由ALTER USER語句設定,試圖用CREATE USER語句設定將回返回一個例外。
ALTER USER manoj DEFAULT ROLE ALL EXCEPT salary_adm;
為使用者的password設定到期時間以便在使用者下次登入時更改
當使用者的password到期,在下一次登入時將強迫修改password,oracle提示使用者輸入舊的password,然後輸入新的password。這項功能常用於新使用者,當新使用者用預設的password登入時必須修改立即修改password.
ALTER USER manoj IDENTIFIED BY welcome;
ALTER USER manoj PASSWORD EXPIRE;
鎖定帳號,是使用者不能登入
ALTER USER ql AC
COUNT LOCK
對帳號解鎖,以便使用者能登入資料庫
ALTER USER ql ACCOUNT UNLOCK
許可權和角色
許可權允許使用者訪問屬於其它使用者的對象或執行程式,ORACLE系統提供三種許可權:
Object 對象級
System 系統級
Role 角色級
這些許可權可以授予給使用者、特殊使用者public或角色,如果授予一個許可權給特殊使用者"Public"(使用者public是oracle預定義的,每個使用者享有這個使用者享有的許可權),那麼就意味作將該許可權授予了該資料庫的所有使用者。
對系統管理權限而言,角色是一個工具,許可權能夠被授予給一個角色,角色也能被授予給另一個角色或使用者。使用者可以通過角色繼承許可權,除了系統管理權限外角色服務沒有其它目的。許可權可以被授予,也可以用同樣的方式撤銷。
建立和使用角色
如前所訴,角色存在的目的就是為了使許可權的管理變得輕鬆。建立角色使用CREATE ROLE語句,他的文法如下:
CREATE ROLE role_name IDENTIFIED BY password
CREATE ROLE role_name IDENTIFIED EXTERNALLY
CREATE ROLE role_name IDENTIFIED GLOBALLY
預設情況下建立的角色沒有password或者其他的識別。如果使用IDENTIFIED BY 子句建立,那麼角色不會自動響應,必須用SET ROLE啟用。
SET ROLE role_name IDENTIFIED BY password
EXTERNALLY和GLOBALLY類型的角色由作業系統和ORACLE Service server驗證。通常使用者需要許可權修改應用程式中使用的表單中的資料,但是只有在應用程式運行時而不是在使用ad hoc工具時,這種上下文敏感安全可以通過有PASSWORD的角色來實現。當使用者在應用程式內部連結資料庫時,代碼將執行SET ROLE命令,通過安全驗證。所以使用者不需要知道角色的password,也不需要自己輸入SET ROLE命令。
對象許可權
對象許可權就是指在表、視圖、序列、過程、函數或包等對象上執行特殊動作的權利。有九種不同類型的許可權可以授予給使用者或角色。如下表:
許可權 |
ALTER |
DELETE |
EXECUTE |
INDEX |
INSERT |
READ |
REFERENCE |
SELECT |
UPDATE |
Directory |
no |
no |
no |
no |
no |
yes |
no |
no |
no |
function |
no |
no |
yes |
no |
no |
no |
no |
no |
no |
procedure |
no |
no |
yes |
no |
no |
no |
no |
no |
no |
package |
no |
no |
yes |
no |
no |
no |
no |
no |
no |
DB Object |
no |
no |
yes |
no |
no |
no |
no |
no |
no |
Libary |
no |
no |
yes |
no |
no |
no |
no |
no |
no |
Operation |
no |
no |
yes |
no |
no |
no |
no |
no |
no |
Sequence |
yes |
no |
no |
no |
no |
no |
no |
no |
no |
Table |
yes |
yes |
no |
yes |
yes |
no |
yes |
yes |
yes |
Type |
no |
no |
yes |
no |
no |
no |
no |
no |
no |
View |
no |
yes |
no |
no |
yes |
no |
no |
yes |
yes |
對象由不止一個許可權,特殊許可權ALL可以被授予或撤銷。如TABLE的ALL許可權就包括:
SELECT,INSERT,UPDATE和DELETE,還有INDEX,ALTER,和REFERENCE。
如何看這個表我們以ALTER許可權為例進行說明
ALTER許可權
允許執行ALTER TABLE和LOCK TABLE操作,ALTER TABLE可以進行如下操作:
. 更改表名
. 增加或刪除列
. 改變列的資料類型或大小
. 將錶轉變為分區表
在SEQUENCE上的ALTER許可權允許執行ALTER Sequence語句,重新給sequence分配最小值、增量和緩衝區大小。
系統許可權
系統許可權需要授予者有進行系統級活動的能力,如串連資料庫,更改使用者會話、建立表或建立使用者等等。你可以在資料字典視圖SYSTEM_PRIVILEGE_MAP上獲得完整的系統許可權。對象許可權和系統許可權都通過GRANT語句授予使用者或角色。需要注意的是在授予對象許可權時語句應該是WITH GRANT OPTION子句,但在授予系統權象時語句是WITH ADMIN OPTION,所以在你試圖授予系統許可權時,使用語句WITH GRANT OPTION系統會報告一個錯誤:ONLY
ADMIN OPTION can be specified。在考試中要特別注意這個文法和錯誤資訊。