表空間和數(shù)據(jù)文件
1.表空間介紹
1). 表空間與數(shù)據(jù)文件的關(guān)系
在Oracle數(shù)據(jù)庫(kù)中,表空間與數(shù)據(jù)文件之間的關(guān)系非常密切,這二者相互依存,也就是說(shuō),創(chuàng)建表空間時(shí)必須創(chuàng)建數(shù)據(jù)文件,增加表空間時(shí)也必須指定表空間;
Oracle磁盤(pán)空間管理中的最高邏輯層是表空間(TABLESPACE),它的下一層是段(SEGMENT),一個(gè)段只能存在于一個(gè)表空間內(nèi)。段的下一層是盤(pán)區(qū),一個(gè)段可以有多個(gè)盤(pán)區(qū),每個(gè)盤(pán)區(qū)只能存在于一個(gè)數(shù)據(jù)文件中。如果一個(gè)段跨越多個(gè)數(shù)據(jù)文件,在此段下每個(gè)數(shù)據(jù)文件的盤(pán)區(qū)互相獨(dú)立。盤(pán)區(qū)的下一層是數(shù)據(jù)塊,數(shù)據(jù)塊是磁盤(pán)空間管理中邏輯劃分的最底層。一組數(shù)據(jù)塊組成一個(gè)盤(pán)區(qū)。
數(shù)據(jù)庫(kù)、表空間、數(shù)據(jù)文件、段、盤(pán)區(qū)、數(shù)據(jù)塊及操作系統(tǒng)質(zhì)檢的關(guān)系

2). 表空間
表空間信息存放于DBA_DATA_FILES數(shù)據(jù)字典中.
--查詢表空間信息語(yǔ)句
-
select tablespace_name,file_name,bytes from DBA_DATA_FILES
Oracle 11g默認(rèn)的表空間有六個(gè):
image.png
2.創(chuàng)建表空間
為了簡(jiǎn)化表空間的管理并提高系統(tǒng)性能,Oracle建議將不同類(lèi)別的數(shù)據(jù)存放于不同的表空間中,因此創(chuàng)建數(shù)據(jù)庫(kù)后管理員還需要根據(jù)具體情況創(chuàng)建不同類(lèi)型的表空間;表空間創(chuàng)建后可以增加大小,Oracle表空間數(shù)據(jù)文件最大為32G,如需更大的表空間,為這個(gè)表空間創(chuàng)建其他的數(shù)據(jù)文件即可。
表空間創(chuàng)建及修改語(yǔ)句:
-
--創(chuàng)建TEST表空間,數(shù)據(jù)文件為T(mén)EST01.dbf,存放在C:\tablespace路徑下,大小為2048M
create tableSpace TEST datafile 'C:\tablespace\TEST01.dbf' SIZE 2048M;
-
--為表空間增加數(shù)據(jù)文件TEST02.dbf,大小為2G:
alter tablespace HDAPP add datafile ' C:\tablespace\TEST02.dbf ' size 2048M;
-
增加表空間原有數(shù)據(jù)文件尺寸,修改為4096M
alter database datafile 'C:\tablespace\TEST01.dbf ' resize 4096M;
修改TEST01.dbf數(shù)據(jù)文件的大小為自動(dòng)增長(zhǎng),每次增長(zhǎng)1024M,最大可增長(zhǎng)至20G;
ALTER DATABASE DATAFILE ' C:\tablespace\TEST01.dbf ' AUTOEXTEND ON NEXT 1024M MAXSIZE 20480M;
表空間自動(dòng)擴(kuò)展屬性可以查詢并關(guān)閉
--查詢是否是自動(dòng)擴(kuò)展:
select file_name,autoextensible,increment_by from dba_data_files ;-
關(guān)閉擴(kuò)展:
alter database datafile/TEMPFILE ' C:\tablespace\TEST02.dbf ' autoextend off;刪除表空間語(yǔ)句:
刪除表空間:
DROP TABLESPACE TEST INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
表空間查詢相關(guān)語(yǔ)句
--表空間大小查詢:
SELECT a.tablespace_name "表空間名",
total "表空間大小",
free "表空間剩余大小",
(total - free) "表空間使用大小",
total / (1024 * 1024 * 1024) "表空間大小(G)",
free / (1024 * 1024 * 1024) "表空間剩余大小(G)",
(total - free) / (1024 * 1024 * 1024) "表空間使用大小(G)",
round((total - free) / total, 4) * 100 "使用率 %"
FROM (SELECT tablespace_name, SUM(bytes) free
FROM dba_free_space
GROUP BY tablespace_name) a,
(SELECT tablespace_name,SUM(bytes) total
FROM dba_data_files
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name;--查詢表空間物理地址
select c.tablespace_name 表空間名,c.file_name 物理文件地址,SUM(bytes)/1024/1024/1024 "表空間大小(G)"
from dba_data_files c
group by c.tablespace_name,c.file_name
order by c.tablespace_name,c.file_name ;
