在Oracle資料庫中,每一個使用者一般都有自己的資料資料表空間、暫存資料表空間和索引資料表空間等資料存放區空間,而且你不能隨意寫到其他的資料表空間上。例如,我們常見到有表建立在users資料表空間上,更有甚者是建立在system資料表空間上的。不信的話,你去查一下自己的資料庫。新使用者的許可權也需要嚴格控制,一般授予connect,resource兩個角色,另外create view等許可權可以根據需求添加。在10g中,resource角色有一個系統許可權unlimited tablespace,需要最後手工去掉。
如果你需要對使用者的資源等做限制,如密碼失效周期、使用者最大會話串連數等,可以藉助profile來實現。
這是資料庫使用者建立的規範。具體建立過程,我一步一步的列出來。
首先,建立使用者所需要的儲存資料的資料表空間和臨時空間。
create tablespace TBS_MIKI datafile '/u01/oradata/servdb/datafile/tbs_miki01.dbf' size 10M;
create temporary tablespace TBS_MIKI_TEMP datafile '/u01/oradata/servdb/datafile/tbs_miki_temp01.dbf' size 10M;
注意資料表空間命名方式。
其次,建立新使用者,如usr_miki 。
CREATE USER USR_MIKI IDENTIFIED BY USR_MIKI
DEFAULT TABLESPACE TBS_MIKI
TEMPORARY TABLESPACE TBS_MIKI_TEMP
PROFILE DEFAULT
QUOTA UNLIMITED ON TBS_MIKI;
最後,授予角色connect,resource
GRANT "CONNECT" TO USR_MIKI WITH ADMIN OPTION;
GRANT "RESOURCE" TO USR_MIKI WITH ADMIN OPTION;
ALTER USER USR_MIKI DEFAULT ROLE "CONNECT", "RESOURCE";
需要將unlimited tablespace去掉,因為10g2之後添加resource角色會自動加此系統許可權。
revoke unlimited tablespace from usr_miki;
alter user USR_MIKI QUOTA UNLIMITED ON TBS_MIKI;
還需要一些許可權,如建立視圖、建立物化視圖、建立同義字等,畢竟resource角色的許可權還比較少。
通過這些步驟,我們建立了一個基本上符合開發、生產的規範的資料庫使用者。
這個使用者擁有connect,resource 角色,所有資料將只能寫入到tbs_miki 資料表空間上。如果您需要新加一個資料表空間如用來單獨儲存索引對象,可以在資料表空間建立後,將它的使用限額授權給該使用者。
create tablespace TBS_MIKI_IND datafile '/u01/oradata/servdb/datafile/tbs_miki_ind01.dbf' size 10M;
alter user USR_MIKI QUOTA UNLIMITED ON TBS_MIKI_IND;