詳解 oracle表空間管理和數據文件|案例分享

一、概念

表空間是數據庫的邏輯組成部分。

從物理上講,數據庫數據存放在數據文件中;

從邏輯上講,數據庫數據則是存放在表空間中,表空間由一個或多個數據文件組成。

詳解 oracle表空間管理和數據文件|案例分享


二、數據庫的邏輯結構

oracle中邏輯結構包括表空間、段、區和塊。

說明一下數據庫由表空間構成,而表空間又是由段構成,而段又是由區構成,而區又是由oracle塊構成的這樣的一種結構,可以提高數據庫的效率。


三、表空間

1、概念

表空間用於從邏輯上組織數據庫的數據。數據庫邏輯上是由一個或是多個表空間組成的。通過表空間可以達到以下作用:

1)、控制數據庫佔用的磁盤空間

2)、dba可以將不同數據類型部署到不同的位置,這樣有利於提高i/o性能,同時利於備份和恢復等管理操作。

詳解 oracle表空間管理和數據文件|案例分享

表空間分類

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表空間、 臨時表空間、 非標準塊的表空間的內容後期再分享,感興趣的朋友可以關注下!

詳解 oracle表空間管理和數據文件|案例分享


分享到:


相關文章: