一、概念
表空間是數據庫的邏輯組成部分。
從物理上講,數據庫數據存放在數據文件中;
從邏輯上講,數據庫數據則是存放在表空間中,表空間由一個或多個數據文件組成。
二、數據庫的邏輯結構
oracle中邏輯結構包括表空間、段、區和塊。
說明一下數據庫由表空間構成,而表空間又是由段構成,而段又是由區構成,而區又是由oracle塊構成的這樣的一種結構,可以提高數據庫的效率。
三、表空間
1、概念
表空間用於從邏輯上組織數據庫的數據。數據庫邏輯上是由一個或是多個表空間組成的。通過表空間可以達到以下作用:
1)、控制數據庫佔用的磁盤空間
2)、dba可以將不同數據類型部署到不同的位置,這樣有利於提高i/o性能,同時利於備份和恢復等管理操作。
2、建立表空間
建立表空間是使用crate tablespace命令完成的,需要注意的是,一般情況下,建立表空間是特權用戶或是dba來執行的,如果用其他用戶來創建表空間,則用戶必須要具有create tablespace的系統權限。
1)、建立數據表空間
命令:create tablespace nwpp datafile '+DATA/nwpp.dbf' size 10G uniform size 128k;
說明:執行完上述命令後,會建立名稱為nwpp的表空間,併為該表空間建立名稱為data01.dbf的數據文件,區的大小為128k
2)、使用數據表空間
create table nwpp_test(
deptno number(4),
dname varchar2(14),
loc varchar2(13)
) tablespace nwpp;
3、改變表空間的狀態
當建立表空間時,表空間處於聯機的(online)狀態,此時該表空間是可以訪問的,並且該表空間是可以讀寫的,即可以查詢該表空間的數據,而且還可以在表空間執行各種語句。但是在進行系統維護或是數據維護時,可能需要改變表空間的狀態。一般情況下,由特權用戶或是dba來操作。
1)、使表空間脫機
alter tablespace 表空間名 offline;
eg、alter tablespace nwpp offline;--表空間名不能加單引號
2)、使表空間聯機
alter tablespace 表空間名 online;
eg、alter tablespace nwpp online;
3)、只讀表空間
當建立表空間時,表空間可以讀寫,如果不希望在該表空間上執行update,delete,insert操作,那麼可以將表空間修改為只讀
alter tablespace 表空間名 read only;
注意:修改為可寫是alter tablespace 表空間名 read write;)
4、刪除表空間
一般情況下,由特權用戶或是dba來操作,如果是其他用戶操作,那麼要求用戶具有drop tablespace 系統權限。
drop tablespace ‘表空間’ including contents and datafiles;
eg、drop TABLESPACE nwpp including contents and datafiles;
說明:including contents表示刪除表空間時,刪除該空間的所有數據庫對象,而datafiles表示將數據庫文件也刪除。
5、擴展表空間
表空間是由數據文件組成的,表空間的大小實際上就是數據文件相加後的大小。那麼我們可以想象,假定表employee存放到data01表空間上,初始大小就是2M,當數據滿2M空間後,如果在向employee表插入數據,這樣就會顯示空間不足的錯誤。
案例說明:
1. 建立一個表空間nwpp2
eg、create tablespace nwpp2 datafile '+DATA/nwpp01.dbf' size 1M uniform size 128k;
2. 在該表空間上建立一個普通表mydment其結構和dept一樣
create table nwpp_test2(
deptno number(4),
dname varchar2(14),
loc varchar2(13)
) tablespace nwpp2;
3. 向該表中加入數據insert into nwpp_test2 select * from dept;
4. 當一定時候就會出現無法擴展的問題,怎麼辦?
5. 就擴展該表空間,為其增加更多的存儲空間。
有三種方法:
1. 增加數據文件
SQL> alter tablespace nwpp2 add datafile '+DATA/nwpp02.dbf' size 10m;
2. 修改數據文件的大小
SQL> alter tablespace nwpp2 '+DATA/nwpp01.dbf' resize 10m;
3. 設置文件的自動增長。
SQL> alter tablespace nwpp2 '+DATA/nwpp01.dbf' autoextend on next 10m maxsize 500m;
四、其它表空間
除了最常用的數據表空間外,還有其他類型表空間:
1. 索引表空間
2. undo表空間
3. 臨時表空間
4. 非標準塊的表空間
關於索引表空間、 undo表空間、 臨時表空間、 非標準塊的表空間的內容後期再分享,感興趣的朋友可以關注下!
閱讀更多 波波說運維 的文章