在oracle中,表空間是Oracle資料物件和資料儲存的容器,是一個邏輯概念,若干作業系統檔案就可以組成一個表空間。表空間統一管理空間中的資料文件,一個資料檔案只能屬於一個表空間;而一個資料庫空間由若干個表空間組成。
本教學操作環境:Windows7系統、Oracle 11g版、Dell G3電腦。
Oracle表空間
在資料庫系統中,儲存空間是較為重要的資源,合理利用空間,不但能節省空間,還可以提高系統的效率和工作性能。
Oracle 可以存放大量數據,所有數據都儲存在數據檔案中。而資料檔案大小受作業系統限制,過大的資料檔案對資料的存取效能影響非常大。同時Oracle 是跨平台的資料庫, Oracle 資料可以輕鬆的在不同平台上移植,那麼如何提供統一存取格式的大容量呢? Oracle 採用表空間來解決。
表空間是Oracle資料物件和資料儲存的容器,它只是一個邏輯概念,若干作業系統檔案(檔案可以不是很大)可以組成一個表空間。表空間統一管理空間中的資料文件,一個資料檔案只能屬於一個表空間。一個資料庫空間由若干個表空間組成。如圖所示:
Oracle 中所有的資料(包含系統資料),全部保存在表空間中,常見的表空間有:
系統表空間:
存放系統數據,系統表空間在資料庫建立時建立。表空間名稱為SYSTEM。存放資料字典和視圖以及資料庫結構等重要係統資料訊息,在運行時如果SYSTEM 空間不足,對資料庫影響會比較大,雖然在系統運作過程中可以透過指令擴充空間,但還是會影響資料庫的效能,因此有必要在建立資料庫時適當的把資料檔設定大一些。
TMEP 表空間:
臨時表空間,安裝資料庫時創建,可以在運行時透過命令增大臨時表空間。臨時表空間的重要作用是資料排序。例如當使用者執行了諸如Order by 等指令後,伺服器需要對所選用資料進行排序,如果資料很大,記憶體的排序區可能裝不下太大數據,就需要把一些中間的排序結果寫在硬碟的臨時表空間中。
使用者表自訂空間:
#使用者可以透過CREATE TABLESPACE 指令建立表格空間
建立表空間
Oracle建立表格空間語法結構如下:
create tablespace tab_name datafile 'filename' size n [autoextend on next n1 maxsize m /of] [permanent] [extent management local/dictionary];
語法解析:
create tablespace:建立表格空間的關鍵字。
tab_name:建立後表空間的名字。
datafile:指定資料檔案的路徑為filename。
size n:指定資料檔案的大小。
[autoextend on next n1 maxsize m /of ]:表示表空間是否是自動擴展的,on 為自動擴展,of為不擴展,當自動擴展時,next n1表示自動擴展的大小,max size m 表示資料檔最大擴展到m大小。
[permanent] :表示建立的表格空間的類型,permanent表示永久表空間,不填都是預設永久表空間。
[extent management local/dictionary]:表示表格空間管理的方式,local表示本地的管理模式,dictionary表示資料字典管理模式,預設都是本機管理方式。
案例1、根據表空間建立語法,建立一個100M大小資料檔(student.dbf)的表空間student,程式碼如下:
create tablespace student datafile 'E:\APP\ADMIN\ORADATA\ORCL\student.DBF' size 100m autoextend on next 10m maxsize 500m permanent extent management local;
案例解析:
建立一個student表空間,指定了資料檔案為“E:\APP\ADMIN\ORADATA\ORCL\student.DBF”,表空間是自動擴充的,每次自動擴充大小為10M,最大擴展到500M,創建的是永久表空間,用來儲存student使用者的資料庫物件和數據,管理模式為本地管理。
我們查看資料字典dba_data_files和dba_tablespaces對建立好後的student表空間進行查詢,查詢程式碼如下:
select t.TABLESPACE_NAME, --表空间名 t.FILE_NAME, --文件名 t.AUTOEXTENSIBLE, --是否自动扩展 t.BYTES / 1024 / 1024, --表空间初始大小 t.MAXBYTES / 1024 / 1024, --表空间最大扩展到多少 b.CONTENTS, --表空间类型 b.EXTENT_MANAGEMENT --表空间管理模式 from dba_data_files t, dba_tablespaces b where t.TABLESPACE_NAME = b.TABLESPACE_NAME
推薦教學:《Oracle教學》
以上是oracle中什麼是表空間的詳細內容。更多資訊請關注PHP中文網其他相關文章!