數據庫的存儲結構
數據庫主要用於存儲和檢索相關的信息,Oracle數據庫包含邏輯結構和物理結構。
物理結構是指現實存儲單元,由一組文件組成如數據文件、日志文件、控制文件。
數據文件:用於存儲數據的文件。如表,索引和數據等都存儲在數據文件中。
日志文件:用於記錄對數據庫的修改信息。
控制文件:用於存儲 Oracle實例信息、數據文件信息和日志文件信息的二進制文件。由於存儲了數據文件和日志文件的信息,所以 Oracle啟動時必須訪問呢控制文件。
邏輯結構式是指數據概念性的組織。包括 表空間、表、行等概念組成。
一、表空間(tablespace)的概念
表空間是Oracle特殊的發明,用於存儲數據庫表,索引等對象的磁盤邏輯空間。在物理上表空間由1個或者多個數據文件組成,而數據庫在邏輯上由1個或者多個表空間組成。
表空間在Oracle10g中北分為一下3類:
1、永久性表空間:一般保持基表、視圖、存儲過程和索引等數據。SYSTEM、SYSAUX、USERS、EXAMPLE表空間是默認安裝的。
2、臨時性表空間:用於保存系統中短期活動的數據,如排序數據等。
3、插銷表空間;用來幫助回退未提交的事務數據,已提交了的數據在這裡是不可以恢復的。
一般不需要建立臨時表空間和撤銷表空間,除非把它們轉移到其他磁盤以提高性能。
表空間的目的:
1、對不同用戶分配不同的表空間,對不同的模式對象分配不同的表空間,方便對用戶操作,對模式對象的管理。
2、可以將不同數據文件創建到不同的磁盤中,有利於管理磁盤空間,有利於提高I/O性能,有利於備份和恢復數據等。
二、系統自帶的表空間:
SYSTEM表空間:用於存放Oracle系統內部表和數據字典的數據,如表名、列名、用戶名等。不建議將用戶創建的表、索引等對象存放到SYSTEM表空間中。
SYSAUS表空間:用於存放Oracle系統內部的常用的樣例用戶的對象。SYSAUX表空間一般不存儲用戶的數據,由Oracle系統自動維護。
撤銷表空間:撤銷表空間用於存放撤銷信息的表空間。當我們對數據庫表的數據進行增加、修改、刪除時,Oracle自動使用撤銷表空間來臨時存儲修改前的數據。當所做操作提交後, Oracle可根據需要保留修改前數據的時間長短來釋放撤銷表空間的部分空間。一般在創建Oracle實例後,Oracle會自動創建一個名為UNDOTBS1的撤銷表空間。
TEMP表空間:用於存放臨時數據的特殊表空間。例如:當用戶需要進行排序時,Oracle講排序的數據臨時放到該表空間內。排序完成後即可釋放排序數據所占用的空間。
USERS表空間:Users表空間是Oracle建議用戶使用的表空間,可以在這個表空間上創建各種對象,如創建表、索引等。
除了 Oracle自帶的表空間外,用戶可以根據需要創建多個表空間,以區分用戶數據和系統數據。一般在Oracle數據庫中,只創建一個數據庫實例,而創建多個表空間來管理保存多個項目中的數據庫表。
三、創建表空間
語法:
CREATE TABLESPACE tablespacename
DATAFILE 'filename'[size integer]
[AUTOEXTEND[OFF|ON]]
tablespancename:表示創建表空間的名稱。
filename:表示組成表空間的一個活多個數據文件,當有多個數據文件時,使用,分隔。
size:指定文件的大小,單位是K(字節)或者M(兆)。
AUTOEXTEND:用來啟用或警用數據文件的自動擴展,只有設置了AUTOEXTEND後,在存儲空間使用完畢後才會自動擴展,設置為ON即可,如果設置為OFF,則不能自動擴展。會導致存儲空間不足的情況。
示例:
--創建一個表空間,物理文件為shop_dev_data.dbf,初始大小為100M,為自動增長 CREATE TABLESPACE shop_dev_data datafile 'E:\DB\Shop\shop_dev_data.dbf' size 100m autoextend on
四、操作表空間
1、更改表空間大小:
ALTER DATABASE DATAFILE '數據文件路徑' resize <新的大小>
--將表空間的物理文件大小設置為50M ALTER DATABASE DATAFILE 'E:\DB\Shop\shop_dev_data.dbf' resize 50m
2、改變表空間的讀寫狀態
ALTER TABLESPACE <表空間名稱> READ WRITE;
--設置表空間為只讀狀態 ALTER TABLESPACE SHOP_DEV_DATA READ ONLY; --設置表空間為讀寫狀態 ALTER TABLESPACE SHOP_DEV_DATA READ WRITE;
3、刪除表空間
DROP TABLESPACE tablespacename;
--刪除表空間 DROP TABLESPACE SHOP_DEV_DATA