基礎知識6——建立和管理使用者賬戶

與刃爭鋒發表於2014-01-07
建立和管理資料庫使用者賬戶

模式schema:使用者賬戶擁有的一組物件.


使用者:某個賬戶名建立針對例項的會話並進行登入來連線到該使用者賬戶的個人.



使用者賬戶屬性

使用者名稱
身份驗證方法
預設表空間
表空間配額
臨時表空間
使用者配置檔案
賬戶狀態


建立使用者時指定以上屬性,不過其中只有使用者名稱和身份驗證方法是必須的,其它的都有預設值.

使用者名稱:必須唯一,必須以字母開頭,字元不超過30個,包含字母,數字,$,下劃線_,不能是保留字比如select啥的.不允許在建立後更改使用者名稱,要改就得刪除再重新建立. 

預設表空間和配額:每個使用者都有預設的表空間,使用者建立的任何模式物件都儲存在此表空間中,使用者可以擁有獲得配額的任何表空間上的物件,除非建立時指定表空間,否則都放在使用者的預設表空間中.

ALTER DATABASE DEFAULT TABLESPACE othertbsname;

如果建立資料庫時未指定預設表空間,則用SYSTEM當預設表空間.

配額quota:表空間中使用者模式可用的空間量

使用者預設的表空間和臨時表空間


select username,default_tablespace,temporary_tablespace from dba_users
where username='SCOTT';



下面兩個命令使使用者有權佔用user表空間中10m的空間,在example表空間中不限量的空間

alter user scott quota 10m on users;

alter user scott quota unlimited on example;

select tablespace_name,bytes,max_bytes from dba_ts_quotas
where username='DMSYS';



select property_name,property_value from database_properties
where property_name like '%TABLESPACE';

PROPERTY_NAME    PROPERTY_VALUE
--------------------------------------------------------------
DEFAULT_TEMP_TABLESPACE    TEMP
DEFAULT_PERMANENT_TABLESPACE    USERS


臨時表空間
永久物件(表)儲存在永久表空間中,臨時物件儲存在臨時表空間中.如果會話為執行某些操作需要的空間超出了會話PGA的可用空間量,則將需要臨時表空間中的空間.PGA是程式全域性區,是分配給會話的專用記憶體.需要臨時空間的操作包括排序行,連線表,構建索引和使用臨時表.會為每個使用者賬戶分配臨時表空間,但連線到該賬戶的所有使用者會話將共享此臨時表空間.

臨時表空間的空間管理完全自動完成,資料庫根據需要建立和刪除臨時物件,不用為使用者授予臨時表空間上的配額.

要更改使用者的臨時表空間(將影響連線到賬戶的所有未來會話),用如下命令:

ALTER USER username TEMPORARY TABLESPACE tablespace_name;


配置檔案:
使用者的配置檔案控制口令設定,並在一定程度上控制資源的使用.配置檔案是管理口令和資源的有效方法.

賬戶狀態:如dba_users的account_status列值一樣,9種可能的狀態. 

select account_status from dba_users

寫幾個常用的:

開啟(open):賬戶可供使用
鎖定(locked):賬戶鎖定,無法使用,解鎖即可.
過期(expired):口令生命週期已終結,重置口令前任何使用者都不能連線到expired賬戶
過期並鎖定(expired&locked):鎖定而且口令還過期了.

鎖定或解除賬戶的鎖定,使用如下命令:

ALTER USER username ACCOUNT LOCK/UNLOCK;

強制使用者更改口令:

ALTER USER username PASSWORD EXPIRE;





身份驗證方法
使用者賬戶必須具有身份驗證方法:資料庫藉助這些方法,確定嘗試建立會話的使用者是否有權這麼做.最簡單的是提供一個與資料庫中儲存的口令匹配的口令.

還有其他方法:

作業系統身份驗證    --僅管理員使用
口令檔案身份驗證    --僅管理員使用
外部身份驗證
全域性身份驗證          --LDAP目錄伺服器,LDAP是oracle internet directory作為oracle應用伺服器的一部分發布.


作業系統和口令檔案身份驗證
要為賬戶啟用作業系統和口令檔案身份驗證(二者相匹配),必須為使用者授予SYSDBA或SYSOPER許可權:

grant [ sysdba | sysoper ] to username;

如果向使用者授予這些許可權,則會將使用者口令從資料字典複製到外部口令檔案中,此時資料庫即使沒開啟,例項也能讀取口令. 


CONNECT username / password [ @db_alias ] AS [ SYSOPER | SYSDBA ];

用此方法通過oracle net連線到遠端資料庫




口令身份驗證

connect username / password [ @db_alias ];

例項將針對資料字典中的使用者賬戶儲存的口令,驗證給定的口令,為此資料庫必須處於開啟狀態,更改口令

ALTER USER username IDENTIFIED BY password;


外部身份驗證


全域性身份驗證




建立賬戶

create user包含兩個必須的引數 使用者名稱和身份驗證方法,一個典型例子:



create user scott identified by tiger       --提供使用者名稱
default  tablespace users temporary tablespace temp     --提供預設表空間和臨時表空間
quota 100m on users,quota unlimited on example          --設定預設表空間和另一表空間配額
profile developer_profile           --用與口令和資源管理的配置檔名
password expire         --強制使用者立刻更改口令
account unlock;         --使賬戶變得可用(預設設定)

只有第一行是必須的,其它都有預設設定:



除了名稱,可更改賬戶上的每個屬性,比如更改口令:

alter user scott identified by cat;


要更改預設表空間和臨時表空間:

alter user scott default tablespace store_data temporary tablespace temp;

更改配額:

alter user scott quota unlimited on store_data,quota 0 on users;

更改配置檔案:

alter user scott profile prod_profile;

強制更改口令:

alter user scott password expire;

鎖定賬戶:

alter user scott account lock;

刪除賬戶:

drop user scott cascade;



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25025926/viewspace-1067978/,如需轉載,請註明出處,否則將追究法律責任。

相關文章