程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle新建用戶、角色,授權,建表空間的sql語句

Oracle新建用戶、角色,授權,建表空間的sql語句

編輯:關於Oracle數據庫
oracle數據庫的權限系統分為系統權限與對象權限。系統權限( database system privilege )可以讓用戶執行特定的命令集。例如,create table權限允許用戶創建表,grant any privilege 權限允許用戶授予任何系統權限。對象權限( database object privilege )可以讓用戶能夠對各個對象進行某些操作。例如delete權限允許用戶刪除表或視圖的行,select權限允許用戶通過select從表、視圖、序列(sequences)或快照(snapshots)中查詢信息。

  每個oracle用戶都有一個名字和口令,並擁有一些由其創建的表、視圖和其他資源。oracle角色(role)就是一組權限(privilege)(或者是每個用戶根據其狀態和條件所需的訪問類型)。用戶可以給角色授予或賦予指定的權限,然後將角色賦給相應的用戶。一個用戶也可以直接給其他用戶授權。

一、創建用戶

Oracle創建用戶的語法:

Oracle創建用戶(密碼驗證用戶),可以采用CREATE USER命令。

CREATE USER username IDENTIFIED BY password

OR IDENTIFIED EXETERNALLY

OR IDENTIFIED GLOBALLY AS ‘CN=user'

[DEFAULT TABLESPACE tablespace]

[TEMPORARY TABLESPACE temptablespace]

[QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace

[,QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace

[PROFILES profile_name]

[PASSWORD EXPIRE]

[ACCOUNT LOCK or ACCOUNT UNLOCK]

其中,

CREATE USER username:用戶名,一般為字母數字型和“#”及“_”符號。

IDENTIFIED BY password:用戶口令,一般為字母數字型和“#”及“_”符號。

IDENTIFIED EXETERNALLY:表示用戶名在操作系統下驗證,該用戶名必須與操作系統中所定義的用戶名相同。

IDENTIFIED GLOBALLY AS ‘CN=user':用戶名由Oracle安全域中心服務器驗證,CN名字表示用戶的外部名。

[DEFAULT TABLESPACE tablespace]:默認的表空間。

[TEMPORARY TABLESPACE tablespace]:默認的臨時表空間。

[QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace:用戶可以使用的表空間的字節數。

[PROFILES profile_name]:資源文件的名稱。

[PASSWORD EXPIRE]:立即將口令設成過期狀態,用戶再登錄前必須修改口令。

[ACCOUNT LOCK or ACCOUNT UNLOCK]:用戶是否被加鎖,默認情況下是不加鎖的。

  oracle內部有兩個建好的用戶:system和sys。用戶可直接登錄到system用戶以創建其他用戶,因為system具有創建別 的用戶的 權限。 在安裝oracle時,用戶或系統管理員首先可以為自己建立一個用戶。例 如 :

代碼如下:

create user user01 identified by u01;

  該命令還可以用來設置其他權限,詳細情況參見自學資料。要改變一個口令,可以使用alter user命令:
代碼如下:

alter user user01 identified by usr01;

現在user01的口令已由“u01”改為“usr01”。

  除了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中刪除了這個用戶, 也不會破壞用戶創建的任何表;只是簡單禁止其對這些表的訪問。其他要訪問這些表的用戶可以象以前那樣地訪問這些表。

四、創建角色

  除了前面講到的三種系統角色----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權限。

五、刪除角色

  要刪除角色,可以使用drop role命令,如下所示:
代碼如下:

  drop role student;

  指定的role連同與之相關的權限將從數據庫中全部刪除。

六、刪除表的注意事項
 
在刪除一個表中的全部數據時,須使用

Sql代碼 
代碼如下:

truncate table 表名

因為用drop table,delete * from 表名時,tablespace表空間該表的占用空間並未釋放,反復幾次drop,delete操作後,該tablespace上百兆的空間就被耗光了。
作者“技術總結”
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved