一.模式
模式又稱方案(Schema),是用戶所擁有的所有數據庫對象的集合,如表、索引、觸發器等邏輯對象都存儲在模式對象中。
模式的名稱和用戶的名稱相同,用戶與模式一一對應。默認情況下,用戶所創建的數據庫對象都保存在自己的同名模式中
注意事項:
用戶可以直接訪問自己模式中的對象,如要訪問其他模式中的對象,則必須具有相應的對象權限
數據庫中的對象名在同一個模式中是唯一的,但在不同模式中可以具有相同的對象名。
當用戶訪問其他模式中的對象時,必須加模式名來做前綴。即:模式名.對象名
1.模式的選擇與切換
如果用戶以NORMAL身份登錄,則進入同名模式。
如果用戶以SYSDBA身份登錄,則進入SYS模式。
CONNCE SYS/ORACLE10 AS SYSDBA
如果用戶以SYSOPER身份登錄,則進入PUBLIC模式
CONN SYS/ORACLE 10 AS SYSOPER
2.模式對象與非模式對象
模式對象
主要包括表、索引、DML觸發器、視圖、存儲過程、程序包、JAVA類、自定義類型等。
注意:模式對象名最多為30個字符,且小寫字母會被轉換為大寫字母。如使用的不是標准標識符,則需要將其封裝在雙引號中。
非模式對象
包括表空間、用戶、角色、概要文件等。
二.創建用戶
1 ORACLE 初始用戶
SYS 是數據庫中具有最高權限的數據庫管理員,可以啟動、修改、關閉數據庫,擁有數據字典。
SYSTEM 是一個輔助的數據庫管理員,不能啟動和關閉數據庫,但可以進行其他一些管理工作,如創建用戶、刪除用戶等。
PUBLIC 是一個用戶組,數據庫中任何一個用戶都屬於該組成員。要為數據庫中每個用戶都授予某個權限,只需要把權限授予PUBLIC 就可以了。
2 查詢用戶信息的數據字典
1)ALL_USERS:包含數據庫所有用戶的用戶名、用戶id 和用戶創建時間。
2)DBA_USERS:包含數據庫所有用戶的詳細信息。
3)USER_USERS:包含當前用戶的詳細信息。
4)DBA_TS_QUOTAS:包含所有用戶的表空間配額信息。
5)USER_TS_QUOTAS:包含當前用戶的表空間配額信息。
3、SQL語句創建用戶
CREATE USER user_name IDENTIFIED BY password [DEFAULT TABLESPACE tablespace_name] [TEMPORARY TABLESPACE temp_tablespace_name] [QUOTA [number[K|M] |UNLIMITED] ON tablespace_name] [ACCOUNT LOCK|UNLOCK];
語法說明:
IDENTIFIED BY:指定帳戶的初始口令
DEFAULT TABLESPACE :用戶的默認表空間
TEMPORARY TABLESPACE :用戶的臨時表空間
QUOTA:用戶在表空間中使用的限額
ACCOUNT :鎖定或解鎖帳戶
【例】使用SQL語句創建用戶orac_test,默認表空間為USERS,臨時表空間為TEMP.
CREATE USER orac_test IDENTIFIED BY oracle DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
【例】使用用戶orac_test連接數據庫
注意:初始建立的數據庫用戶是沒有任何權限的,不能執行任何數據庫操作
三.權限管理
1、在 ORACLE中,權限分為兩類:
(1)系統權限
在數據庫級別執行某種操作的權限,或針對某一類對象執行某種操作的權限。如 CREATE SESSION CREATE TABLE。
(2)對象權限
對某個特定的數據庫對象執行某種操作的權限。如對特定表的插入、刪除、修改、查詢的權限。
2 、在ORACLE 中,將權限授予用戶有如下兩種方法:
(1)直接授權
利用 GRANT 命令直接為用戶授權。
(2)間接授權
先將權限授予角色,然后再將角色授予用戶。
3、在給用戶授權時,應該注意以下4個方面
(1) 只有DBA才應當擁有ALTER DATABASE系統權限。
(2)應用程序開發者一般需要擁有CREATE TABLE CREATE VIEW和CREATE INDEX等系統權限。
(3)普通用戶一般只具有CREATE SESSION 系統權 限。
(4)只有授權時帶有WITH ADMIN OPTION子句時,用戶可以將獲得權限授予其他用戶。
4 、給用戶賦予權限
語法格式:
GRANT 權限或角色 TO 用戶;
【例】使用SQL語句給用戶orac_test授予與刪除CREATE SESSION系統權限
GRANT CREATE SESSION TO orac_test;
REVOKE CREATE SESSION from orac_test;
5、使用數據字典user_users查看當前用戶的詳細信息
SQL>SELECT username FROM user_users;
6、在當前用戶下創建數據表,觀察提示。
7、以 SYS登錄,授權ORAC_TEST用戶CREATE TABLE等權限
8、重新以ORAC_TEST登錄,創建表,觀察提示。
如果成功創建表之后,在表中錄入數據:
我們可以 重新以SYS登錄,修改ORAC_TEST的默認表空間使用配額
alter user orac_test quoto 1m on users
然后再以ORAC_TEST用戶登錄,向表中錄入數據,觀察提示。
補充:角色管理
角色:一系列相關權限的集合。
ORACLE中有三個常用的預定義角色:
CONNECT
RESOURCE
DBA
四.修改用戶
ALTER USER user_name IDENTIFIED BY password [DEFAULT TABLESPACE tablespace_name] [TEMPORARY TABLESPACE temp_tablespace_name] [QUOTA [number[K|M] |UNLIMITED] ON tablespace_name] [PASSWORD EXPIRE]password expire://用來設置用戶口令過期,失效,強制用戶登錄數據庫時候必須修改口令. [ACCOUNT LOCK|UNLOCK];
【例】使用SQL語句更改用戶orac_test的密碼;
ALTER USER orac_test IDENTIFIED BY zhl123
【例】使用SQL語句鎖定用戶orac_test;
ALTER USER orac_test ACCOUNT lock;
【例】使用SQL語句解鎖用戶orac_test;
ALTER USER orac_test ACCOUNT unlock;
五.刪除用戶
語法格式:
DROP USER user_name [CASCADE] 說明:
如果用戶已創建了模式對象,在刪除用戶時必須增加CASCADE選項,表示刪除用戶時連同該用戶創建的對象也刪除,否則系統將提示錯誤信息
例:使用SQL語句刪除用戶orac_test;
DROP USER orac_test CASCADE