標籤:acl 使用 rac 系統 儲存函數 連結 管理 管理工具 ext
一、 資料表空間
Oracle資料庫包含邏輯結構和物理結構。
資料庫的物理結構指的是構成資料庫的一組作業系統檔案。
資料庫的邏輯結構是指描述資料群組織方式的一組邏輯概念以及它們之間的關係。
資料表空間是資料庫邏輯結構的一個重要組件。
資料表空間可以存放各種應用對象,如表、索引等。
而每一個資料表空間由一個或多個資料檔案組成。
1. 資料表空間的分類
資料表空間可分為3類:
- 永久性資料表空間:一般儲存表、上天、過程和索引等資料。system、sysaux、users、example資料表空間是預設安裝的。
- 臨時性資料表空間:只用於儲存系統中短期活動的資料,如排序資料等。
- 撤銷資料表空間:用來協助回退未提交的交易資料,已提交了的資料在這裡是不可以恢複的。一般不需要建立臨時和撤銷資料表空間,除非把它們轉移到其它磁碟中以提高效能。
2. 資料表空間的目的
(1) 對不同的使用者指派不同的資料表空間,對不同的模式對象分配不同的資料表空間,方便對使用者資料的操作、對模式對象的管理。
(2) 可以將不同資料檔案建立到不同的磁碟中,有利於管理磁碟空間、有利於提高I/O效能、有利於備份和回複資料等。
(3) 一般在完成Oracle系統的安裝並建立Oracle執行個體後,Oracle系統會自動建立多個資料表空間。
3. 建立資料表空間
建立資料表空間,文法如下:
1 CREATE TABLESPACE tablespaceName 2 DATAFILE ‘filename‘ 3 [SIZE integer [K | M]] 4 [AUTOEXTEND [OFF | ON]];
在文法中:
- tablespaceName是需建立的資料表空間名稱;
- DATAFILE指定組成資料表空間的一個或多個資料檔案,當有多個資料檔案時使用逗號分隔;
- filename是資料檔案的路徑和名稱;
- SIZE指定檔案的大小,用K指定KB大小,用M指定MB大小;
- AUTOEXTEND子句用來啟用或禁用資料檔案的自動擴充,設定為ON則空間使用完畢會自動擴充,設定為OFF則很容易出現資料表空間剩餘容量為0的情況,使資料不能儲存到資料庫中。
執行個體:建立一個自動成長的資料表空間geeksss的SQL語句如下:
1 CREATE TABLESPACE geeksss 2 DATAFILE ‘D:\ORACLE\DATA\GEEKSSS.DBF‘ 3 SIZE 10M 4 AUTOEXTEND ON;
4. 刪除資料表空間
可以通過DROP語句(DROP TABLESPACE 加上資料表空間的名稱)來刪除使用者自訂的資料表空間。
文法:
1 DROP TABLESPACE tablespaceName;
刪除資料表空間之前最好對資料庫進行備份。
二、 自訂使用者管理
當建立一個新資料庫時,Oracle將建立一些預設資料庫使用者,如sys、system和scott等。 sys和system使用者都是Oracle的系統使用者,而scott使用者是Oracle資料庫的一個示範賬戶,裡麵包含一些測試範例表。
下面簡單介紹一個sys、system和scott使用者的模式。
1. sys
sys使用者是Oracle中的一個超級使用者。
資料庫中的所有資料字典和視圖都儲存在sys模式中。 資料字典儲存了用來管理資料庫對象的所有資訊,是Oracle資料庫中非常重要的系統資訊。
sys使用者主要用來維護系統資訊和管理執行個體。sys使用者只能以sysoper或sysdba角色登入系統。
2. system
system使用者是Oracle中預設的系統管理員,它擁有dba許可權。
該使用者擁有Oracle管理工具使用的內部表和視圖,通常通過system使用者管理Oracle資料庫的使用者、許可權和儲存等。
不建議system模式中建立使用者表,system使用者不能以sysoper或sysdba角色登入系統,只能以預設的方式登入。
3. scott
scott使用者是Oracle資料庫的一個示範使用者,一般在資料庫安裝時建立。
scott使用者模式包含4個示範表,其中一個是emp表,使用USERS資料表空間儲存模式對象。
通常情況下,出於安全考慮,對於不同的資料表需要設定不同的存取權限。
此時,就需要建立不同的使用者。Oracle中的CREATE USER命令用於建立新使用者。
每個使用者都有一個預設資料表空間和一個暫存資料表空間。 如果沒有指定,Oracle就將USERS設為預設資料表空間,將TEMP設為暫存資料表空間。
建立使用者文法如下所示:
1 CREATE USER username 2 IDENTIFIED BY password 3 [DEFAULT TABLESPACE tablespaceName] 4 [TEMPORARY TABLESPACE tablespaceName]
在文法中:
- username是使用者名稱,使用者名稱必須是一個標識符;
- password是使用者口令,口令必須是一個標識符,且不區分大小寫;
- DEFAULT或TEMPORARY TABLESPACE為使用者確定預設資料表空間或暫存資料表空間。
執行個體:一下代碼示範了如何建立名稱為martin的使用者:
1 CREATE USER martin 2 IDENTIFIED BY martinpwd 3 DEFAULT TABLESPACE geeksss 4 TEMPORARY TABLESPACE temp;
上述命令將建立一個名為martin、口令為martinpwd的使用者,預設資料表空間為geeksss,暫存資料表空間為temp。
執行個體:將martin的口令修改為mpwd:
1 ALTER USER martin 2 IDENTIFIED BY mpwd;
Oracle的DROP USER命令可用於刪除使用者,但當使用者擁有模式對象時則無法刪除使用者。 而必須使用CASCADE選項刪除使用者和使用者模式對象。
執行個體:如何刪除使用者martin:
1 DROP USER martin CASCADE;
三、 資料庫許可權管理
許可權是使用者對一項功能的執行權利。 在Oracle中,根據系統管理方式的不同,可將許可權氛圍系統全新啊與對象許可權兩類。
1. 系統許可權
系統許可權是指被授權使用者是否可以串連到資料庫上及在資料庫中可以進行哪些系統操作。
系統許可權是在資料庫中執行某種系統層級的操作,或者針對某一類的對象執行某種操作的權利。
例如:在資料庫中建立資料表空間的權利,或者在資料庫中建立表的權利,這些都屬於系統許可權。
常見的系統許可權如下:
- CREATE SESSION:連結到資料庫
- CREATE TABLE:建立表
- CREATE VIEW:建立視圖
- CREATE SEQUENCE:建立序列
2. 對象許可權
對象許可權是指使用者對資料庫中具體對象所擁有的許可權。
對象許可權是針對某個特定的模式對象執行操作的權利。
只能針對模式對象未設定和管理對象許可權,如資料庫的表、視圖、序列、預存程序、儲存函數等。
Oracle資料庫使用者有兩種途徑獲得許可權:
(1) 管理員直接向使用者授予許可權。
(2) 管理員將許可權授予角色,然後再將角色授予給一個或多個使用者。
使用角色能夠更加方便和高效地對許可權進行管理,所以資料庫管理員通常使用角色向使用者授予許可權,而不是直接向使用者授予許可權。
在Oracle資料庫系統中預定義了很多的角色,其中最常用的有CONNECT角色、RESOURCE角色、DBA角色等等。
一般程式使用的使用者只要授予CONNECT和RESOURCE兩個角色即可。
DBA角色具有所有的系統許可權,並且可以給其他使用者、角色授權。由於DBA角色許可權比較多,這裡就不列出來了。
Oracle中常用的系統預定義角色如下:
- CONNECT:需要串連上資料庫的使用者,特別是那些不需要建立表的使用者,通常授予該角色。
- RESOURCE:更為可靠和正式的資料庫使用者可以授予該角色,可以建立表、觸發器、過程等。
- DBA:資料庫管理員角色,擁有管理資料庫的最高許可權,一個具有DBA角色的使用者可以撤銷任何別的使用者甚至別的DBA許可權,這是很危險的,所以不要輕易授予該角色。
(1) 授予許可權文法如下:
1 GRANT 許可權|角色 TO 使用者名稱;
(2) 撤銷許可權的文法如下:
1 REVOKE 許可權|角色 FROM 使用者名稱;
執行個體:如何授予和撤銷martin使用者的CONNECT和RESOURCE兩個角色:
1 GRANT connection,resource to martin; -- 授予CONNECTION和RESOURCE兩個角色 2 REVOKE connection, resource FROM martin; -- 撤銷CONNECTION和RESOURCE兩個角色 3 GRANT SELECT ON SCOTT.emp TO martin; -- 允許使用者查看emp表中的記錄 4 GRANT UPDATE ON SCOTT.emp TO martin; -- 允許使用者更新emp表中的記錄
資料庫使用者安全設計原則:
- 資料庫使用者權限授權按照最小分配原則;
- 資料庫使用者要分為管理、應用、維護、備份四類使用者;
- 不允許使用sys和system建立資料庫應用對象;
- 禁止GRANT dba TO user。
Oracle 資料表空間和使用者權限管理【轉】