在oracle中,表空間是Oracle數(shù)據(jù)對象和數(shù)據(jù)存儲的容器,是一個邏輯概念,若干操作系統(tǒng)文件就可以組成一個表空間。表空間統(tǒng)一管理空間中的數(shù)據(jù)文件,一個數(shù)據(jù)文件只能屬于一個表空間;而一個數(shù)據(jù)庫空間由若干個表空間組成。
本教程操作環(huán)境:Windows7系統(tǒng)、Oracle 11g版、Dell G3電腦。
Oracle表空間
在數(shù)據(jù)庫系統(tǒng)中,存儲空間是較為重要的資源,合理利用空間,不但能節(jié)省空間,還可以提高系統(tǒng)的效率和工作性能。
Oracle 可以存放海量數(shù)據(jù),所有數(shù)據(jù)都在數(shù)據(jù)文件中存儲。而數(shù)據(jù)文件大小受操作系統(tǒng)限制,并且過大的數(shù)據(jù)文件對數(shù)據(jù)的存取性能影響非常大。同時Oracle 是跨平臺的數(shù)據(jù)庫, Oracle 數(shù)據(jù)可以輕松的在不同平臺上移植,那么如何才能提供統(tǒng)一存取格式的大容量呢? Oracle 采用表空間來解決。
表空間是Oracle數(shù)據(jù)對象和數(shù)據(jù)存儲的容器,它只是一個邏輯概念,若干操作系統(tǒng)文件(文件可以不是很大)可以組成一個表空間。表空間統(tǒng)一管理空間中的數(shù)據(jù)文件,一個數(shù)據(jù)文件只能屬于一個表空間。一個數(shù)據(jù)庫空間由若干個表空間組成。如圖所示:
Oracle 中所有的數(shù)據(jù)(包括系統(tǒng)數(shù)據(jù)),全部保存在表空間中,常見的表空間有:
-
系統(tǒng)表空間:
存放系統(tǒng)數(shù)據(jù),系統(tǒng)表空間在數(shù)據(jù)庫創(chuàng)建時創(chuàng)建。表空間名稱為SYSTEM。存放數(shù)據(jù)字典和視圖以及數(shù)據(jù)庫結(jié)構(gòu)等重要系統(tǒng)數(shù)據(jù)信息,在運行時如果 SYSTEM 空間不足,對數(shù)據(jù)庫影響會比較大,雖然在系統(tǒng)運行過程中可以通過命令擴充空間,但還是會影響數(shù)據(jù)庫的性能,因此有必要在創(chuàng)建數(shù)據(jù)庫時適當?shù)陌褦?shù)據(jù)文件設(shè)置大一些。
-
TMEP 表空間:
臨時表空間,安裝數(shù)據(jù)庫時創(chuàng)建,可以在運行時通過命令增大臨時表空間。臨時表空間的重要作用是數(shù)據(jù)排序。比如當用戶執(zhí)行了諸如 Order by 等命令后,服務(wù)器需要對所選取數(shù)據(jù)進行排序,如果數(shù)據(jù)很大,內(nèi)存的排序區(qū)可能裝不下太大數(shù)據(jù),就需要把一些中間的排序結(jié)果寫在硬盤的臨時表空間中。
-
用戶表自定義空間:
用戶可以通過 CREATE TABLESPACE 命令創(chuàng)建表空間
創(chuàng)建表空間
Oracle創(chuàng)建表空間語法結(jié)構(gòu)如下:
create tablespace tab_name datafile 'filename' size n [autoextend on next n1 maxsize m /of] [permanent] [extent management local/dictionary];
語法解析:
-
create tablespace:創(chuàng)建表空間的關(guān)鍵字。
-
tab_name:創(chuàng)建后表空間的名字。
-
datafile:指定數(shù)據(jù)文件的路徑為filename。
-
size n:指定數(shù)據(jù)文件的大小。
-
[autoextend on next n1 maxsize m /of ]:表示表空間是否是自動擴展的,on 為自動擴展,of為不擴展,當自動擴展時,next n1表示自動擴展的大小,max size m 表示數(shù)據(jù)文件最大擴展到m大小。
-
[permanent] :表示創(chuàng)建的表空間的類型,permanent表示永久表空間,不填都是默認永久表空間。
-
[extent management local/dictionary]:表示表空間管理的方式,local表示本地的管理模式,dictionary表示數(shù)據(jù)字典管理模式,默認都是本地管理方式。
案例1、根據(jù)表空間創(chuàng)建語法,創(chuàng)建一個100M大小數(shù)據(jù)文件(student.dbf)的表空間student,代碼如下:
create tablespace student datafile 'E:APPADMINORADATAORCLstudent.DBF' size 100m autoextend on next 10m maxsize 500m permanent extent management local;
案例解析:
創(chuàng)建一個student表空間,指定了數(shù)據(jù)文件為“E:APPADMINORADATAORCLstudent.DBF”,表空間是自動擴展的,每次自動擴展大小為10M,最大擴展到500M,創(chuàng)建的是永久表空間,用來存儲student用戶的數(shù)據(jù)庫對象和數(shù)據(jù),管理模式為本地管理。
我們查看數(shù)據(jù)字典dba_data_files和dba_tablespaces對創(chuàng)建好后的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教程》