1. 創建用戶:
SQL> create user user01 identified by user01;
User created.
但登錄提示01045的錯誤,缺少CREATE SESSION權限。
ERROR:
ORA-01045: user USER01 lacks CREATE SESSION privilege; logon denied
Enter user-name:
此時需要賦予connect權限給用戶(原因見(2)),登陸後創建表提示01031錯誤:
SQL> create table t(x number);
create table t(x number)
*
ERROR at line 1:
ORA-01031: insufficient privileges
再次賦予resource權限給用戶(原因見(2)),就可以創建表了。
2. 需要為用戶授予connect和resource權限:
SQL> grant connect, resource to user01;
Grant succeeded.
下面來說說為什麼需要connect和resource權限,
關於connect和resource的權限可參見之前的博客文章:http://blog.itpub.net/7192724/viewspace-1184490/
RESOURCE:擁有Resource權限的用戶只可以創建實體,不可以創建數據庫結構。
CONNECT:擁有Connect權限的用戶只可以登錄Oracle,不可以創建實體,不可以創建數據庫結構。
SQL> select grantee,privilege from dba_sys_privs where grantee='RESOURCE' order by privilege;
GRANTEE PRIVILEGE
------------------------------ ----------------------------------------
RESOURCE CREATE CLUSTER
RESOURCE CREATE INDEXTYPE
RESOURCE CREATE OPERATOR
RESOURCE CREATE PROCEDURE
RESOURCE CREATE SEQUENCE
RESOURCE CREATE TABLE
RESOURCE CREATE TRIGGER
RESOURCE CREATE TYPE
8 rows selected.
SQL> select grantee,privilege from dba_sys_privs where grantee='CONNECT' order by privilege;
GRANTEE PRIVILEGE
------------------------------ ----------------------------------------
CONNECT CREATE SESSION
因此具有connect的用戶就有sqlplus創建SESSION的權限,至於創建表就靠resource權限。
3. 刪除用戶:
SQL> drop user user01;報錯說明該用戶下有創建的其他對象,如果刪除用戶,有兩種方法:
1. 刪除用戶下的對象:
登錄user01後執行:
SQL> drop table tbl_seg;
Table dropped.
再次登錄SYS執行:
SQL> drop user user01;
User dropped.
2. 使用CASCADE級聯刪除:
drop user user01 cascade;