Oracle資料操作和控制語言詳解(三)

來源:互聯網
上載者:User
建立和修改使用者

  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。在考試中要特別注意這個文法和錯誤資訊。

  角色和角色許可權

  角色許可權就是將屬於使用者的許可權授予一個角色。任何許可權都可以授予給一個角色。授予系統許可權給被授予者必須使用WITH_ADMIN_OPTION子句,在會話期間通過SET ROLE語句授予或撤銷角色許可權。然而,角色許可權不能依靠儲存在SQL中的許可權。如果函數、程式、包、觸發器或者方法使用另一個計劃擁有的對象,那麼就必須直接給對象的擁有者授權,這是因為許可權不會在會話之間改變。

  授予和撤銷許可權

   給使用者或者角色授予許可權使用GRANT 語句,GRANT語句的文法如下:


GRANT ROLE(或system privilege) TO user(role,Public) WITH ADMIN OPTION(可選)

  對象許可權被授予 WITH GRANT OPTION,

  許可權和資料字典

  資料字典是ORACLE儲存有關資料庫結構資訊的地方,資料本身存放在其他地方,資料字典由表和視圖組成。在考試中關於資料字典最容易考的內容是:查看那一類許可權已經被授予。比如DBA_TAB_PRIV包含了使用者授予給另一使用者的對象許可權和在授予時是否帶有WITH GRANT OTPION子串的資訊。注意DBA_TAB_PRIV不僅僅包含了對錶的許可權的關係,他還包括函數、包、隊列等等上的許可權的關係。下表列出了所有的許可權和角色的資料字典視圖:

  表: 許可權的資料字典視圖


視圖 作用
ALL_COL_PRIVS 表示列上的授權,使用者和PUBLIC是被授予者
ALL_COL_PRIVS_MADE 表示列上的授權,使用者是屬主和被授予者
ALL_COL_RECD 表示列上的授權,使用者和PUBLIC是被授予者
ALL_TAB_PRIVS 表示對象上的授權,使用者是PUBLIC或被授予者或使用者是屬主
ALL_TAB_PRIVS_MADE 表示對象上的許可權,使用者是屬主或授予者
ALL_TAB_PRIVS_RECD 表示對象上的許可權, 使用者是PUBLIC或被授予者
DBA_COL_PRIVS 資料庫列上的所有授權
DBA_ROLE_PRIVS 顯示已授予使用者或其他角色的角色
DBA_SYS_PRIVS 已授予使用者或角色的系統許可權
DBA_TAB_PRIVS 資料庫物件上的所有許可權
ROLE_ROLE_PRIVS 顯示已授予使用者的角色
ROLE_SYS_PRIVS 顯示通過角色授予使用者的系統許可權
ROLE_TAB_PRIVS 顯示通過角色授予使用者的對象許可權
SESSION_PRIVS 顯示使用者現在可利用的所有系統許可權
USER_COL_PRIVS 顯示列上的許可權,使用者是屬主、授予者或被授予者
USER_COL_PRIVS_MADE 顯示列上已授與權限,使用者是屬主或授予者
USER_COL_PRIVS_RECD 顯示列上已授與權限,使用者是屬主或被授予者
USER_ROLE_PRIVS 顯示已授予給使用者的所有角色
USER_SYS_PRIVS 顯示已授予給使用者的所有系統許可權
USER_TAB_PRIVS 顯示已授予給使用者的所有對象許可權
USER_TAB_PRIVS_MADE 顯示已授予給其他使用者的對象許可權,使用者是屬主
USER_TAB_PRIVS_RECD 顯示已授予給其他使用者的對象許可權,使用者是被授予者

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.