一、用戶的概念
用戶,即user,通俗的講就是訪問oracle數據庫的“人”。在oracle中,可以對用戶的各種安全參數進行控制,以維護數據庫的安全性,這些概念包括模式(schema)、權限、角色、存儲設置、空間限額、存取資源限制、數據庫審計等。每個用戶都有一個口令,使用正確的用戶/口令才能登錄到數據庫進行數據存取。
二、用戶默認表空間
表空間是信息存儲的最大邏輯單位、當用戶連接到數據庫進行資料存儲時,若未指出數據的目標存儲表空間時,則數據存儲在用戶的默認表空間中。
比如:create table mytable(id varchar2(20),name varchar2(100));這條語句創建了一個表mytable,並將其存儲在當前用戶的默認表空間中,
若要指定表空間,則:create table mytable(id varchar2(20),name varchar2(100)) tablespace tbs1;。
用戶的默認表空間可以在創建用戶時指定,也可以使用aler user命令進行指定,具體語法見後面的介紹。
三、用戶臨時表空間
臨時表空間主要用於order by語句的排序以及其它一些中間操作。
在oracle9i之前,可以指定用戶使用不同的臨時表空間,從9i開始,臨時表空間是通用的,所的用戶都使用TEMP作為臨時表空間。
四、用戶資源文件
用戶資源文件用來對用戶的資源存取進行限制,包括:cpu使用時間限制、內存邏輯讀個數限制、每個用戶同時可以連接的會話數據限制、
一個會話的空間和時間限制、一個會話的持續時間限制、每次會話的專用SGA空間限制。
五、用戶表空間限額
表空間存儲限制是用戶在某一個表空間中可以使用的存儲空間總數。
在創建或修改用戶時,可以由參數quota指出。若用戶在向表空間存儲數據時,超出了此限額,則會產生錯誤。
錯誤信息如:'ORA-01536:space quota exceeded for tablespace tablespacename..'。可以通過查詢字典dba_ts_quotas查看表空間限額信息。
六、創建用戶資源文件
創建用戶資源文件的語法如下:
CREATE PROFILE filename LIMIT
SESSION_PER_USER integer
CPU_PER_SESSION integer
USER_PER_CALL integer
CONNECT_TIME integer
......
基中:
SESSION_PER_USER: 用戶可以同時連接的會話數量限額;
CPU_PER_SESSION:用戶在一次數據庫會期間可占用的CPU時間總量限額,單位為百分之一秒;
USER_PER_CALL:用戶一次SQL調用可用的CPU時間總量限額,單位為百分之一秒;
LOGICAL_READS_PER_SESSION:在一次數據庫會話期間能夠讀取的數據庫塊的個數限額;
LOGICAL_READS_PER_CALL:一次SQL調用可以讀取的數據庫塊數限額;
IDLE_TIME:用戶連接到數據庫後的可空閒時間限額,單位為分鐘,若空閒時間超過此值,則連接被斷開;
CONNECT_TIME:一次連接的時間總量限額,單位為分鐘,連接時間超過此值時,連接被斷開;
PRIVATE_SGA:用戶麼有的SGA區的大小,單位為數據庫塊,默認值為UNLIMITED;
COMPOSITE_LIMIT:這是一項由上述限制參數構成的組合資源項。
舉例來說,假設資源設置如下:
IDLE_TIME 20
CONNECT_TIME 120
CPU_PER_CALL 750
COMPOSITE_LIMT 800
那麼,當會話空間超過20分鐘,或者連接時間超過120分鐘,又或者執行一個SQL耗費超過7.5秒,再或者這幾個資源限制加起來的總數超過800,
則系統自動終止會話。
FAILED_LOGIN_ATTEMPTS:用戶登錄時,允許用戶名/密碼校驗失敗致使用登錄失敗的次數限額,超過該次數,帳戶被鎖定;
PASSWORD_LIFE_TIME:口令有效時間,單位為天數,超過這一時間,拒絕登錄,須重新設置口令,默認值為UNLIMITED;
PASSWORD_REUSE_TIME:一個失效口令經過多少天後才可重新利用,默認為UNLIMITED;
PASSWORD_REUSE_MAX:一個口令可重復使用的次數;
PASSWORD_LOCK_TIME:當登錄失敗達到FAILED_LOGIN_ATTEMPS時,帳戶被鎖定,該參數用於設定被鎖定的天數;
下面舉例如下:
1)創建一個用戶資源文件
create profile tax_users limit
session_per_user 3
cpu_per_session UNLIMITED
connect_time 30
logical_reads_per_session DEFAULT
logical_reads_per_call 1000
private_sga 15K
composite_limit 500000
password_life_time 90
2)查詢用戶資源文件信息
sql>select *from dba_profile where profile = 'tax_users'
3)指定用戶資源文件給用戶
sql>alter user us1 profile tax_users
七、創建、修改、刪除用戶
1.創建用戶
創建用戶的詳細語法請查詢oracle的官方參數文檔,這裡介紹典型的語法。語法如下:
CREATE USER username
IDENTIFIED BY password
DEFAULT TABLESPACE tablespace
TEMPORARY TABLESPACE tablespace
PROFILE profile
QUOTA integer|UNLIMITED ON tablespace
各選項含義如下:
IDENTIFIED BY password:用戶口令;
DEFAULT TABLESPACE tablespace:默認表空間;
TEMPORARY TABLESPACE tablespace:臨時表空間;
PROFILE profile|DEFAULT:用戶資源文件;
QUOTA integer[K|M]|UNLIMITED ON tablespace:用戶在表空間上的空間使用限額,可以指定多個表空間的限額。
舉例:
CREATE USER us1 IDENTITIED BY abc123
DEFAULT TABLESPACE user01
TEMPORARY TABLESPACE temp
PROFILE DEFAULT
QUOTA 1000M ON user01;
2.修改用戶
Alter User 用戶名
Identified 口令
Default Tablespace tablespace
Temporary Tablespace tablespace
Profile profile
Quota integer/unlimited on tablespace;
1、修改口令字:
Alter user acc01 identified by "12345";
2、修改用戶缺省表空間:
Alter user acc01 default tablespace users;
3、修改用戶臨時表空間
Alter user acc01 temporary tablespace temp_data;
4、強制用戶修改口令字:
Alter user acc01 password expire;
5、將用戶加鎖
Alter user acc01 account lock; // 加鎖
Alter user acc01 account unlock; // 解鎖
3.刪除用戶
刪除用戶,是將用戶及用戶所創建的schema對象從數據庫刪除。如下:
DROP USER us1;
若用戶us1含有schema對象,則無上述語句將執行失敗,須加入關鍵字CASCADE才能刪除,意思是連並其對象一起刪除,如下:
DROP USER us1 CASCADE;
4.查看用戶信息
select * from dba_users;