12 資料庫管理 管理表空間和資料檔案

2021-05-23 11:46:55 字數 4122 閱讀 9450

介紹

表空間是資料庫的邏輯組成部分。從物理上講,資料庫資料存放在資料檔案中;從邏輯上講,資料庫則是存放在表空間中,表空間由乙個或多個資料檔案組成。

資料庫的邏輯結構

 介紹

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

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

為了讓大家明白,我們畫圖說明邏輯關係:看圖:

表空間

 介紹

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

1. 控制資料庫占用的磁碟空間

2. dba可以將不同資料型別部署到不同的位置,這樣有利於提高i/o效能,同時利於備份和恢復等管理操作。

 建立表空間

建立表空間是使用crate tablespace命令完成的,需要注意的是,一般情況下,建立表空間是特權使用者或是dba來執行的,如果用其它使用者來建立表空間,則使用者必須要具有create tablespace的系統許可權。

 建立資料表空間

在建立資料庫後,為便於管理表,最好建立自己的表空間

create tablespace data01 datafile 'd:/test/dada01.dbf' size 20m uniform size 128k;

說明:執行完上述命令後,會建立名稱為data01的表空間,並為該錶空間建立名稱為data01.dbf的資料檔案,區的大小為128k

 使用資料表空間

create table mypart(deptno number(4), dname varchar2(14), loc varchar2(13)) tablespace data01;

 改變表空間的狀態

當建立表空間時,表空間處於聯機的(online)狀態,此時該錶空間是可以訪問的,並且該錶空間是可以讀寫的,即可以查詢該錶空間的資料,而且還可以在表空間執行各種語句。但是在進行系統維護或是資料維護時,可能需要改變表空間的狀態。一般情況下,由特權使用者或是dba來操作。

1. 使表空間離線

alter tablespace 表空間名 offline;

2. 使表空間聯機

alter tablespace 表空間名 online;

3. 唯讀表空間

當建立表空間時,表空間可以讀寫,如果不希望在該錶空間上執行update,delete,insert操作,那麼可以將表空間修改為唯讀

alter tablespace 表空間名 read only;

(修改為可寫是 alter tablespace 表空間名 read write;)

 改變表空間的狀態

我們給大家舉乙個例項,說明唯讀特性:

1. 知道表空間名,顯示該錶空間包括的所有表

select * from all_tables where tablespace_name=』表空間名』;

2. 知道表名,檢視該錶屬於那個表空間

select tablespace_name, table_name from user_tables where table_name=』emp』;

通過2.我們可以知道scott.emp是在system這個表空間上,現在我們可以將system改為唯讀的但是我們不會成功,因為system是系統表空間,如果是普通表空間,那麼我們就可以將其設為唯讀的,給大家做乙個演示,可以加強理解。

3. 4. 使表空間可讀寫

alter tablespace 表空間名 read write;

 刪除表空間

一般情況下,由特權使用者或是dba來操作,如果是其它使用者操作,那麼要求使用者具有drop tablespace系統許可權。

drop tablespace 『表空間』 including contents and datafiles;

說明:including contents表示刪除表空間時,刪除該空間的所有資料庫物件,而datafiles表示將資料庫檔案也刪除。

 擴充套件表空間

表空間是由資料檔案組成的,表空間的大小實際上就是資料檔案相加後的大小。那麼我們可以想象,假定表employee存放到data01表空間上,初始大小就是2m,當資料滿2m空間後,如果在向employee表插入資料,這樣就會顯示空間不足的錯誤。

案例說明:

1. 建立乙個表空間 sp01

2. 在該錶空間上建立乙個普通表 mydment 其結構和dept一樣

3. 向該表中加入資料 insert into mydment select * from dept;

4. 當一定時候就會出現無法擴充套件的問題,怎麼辦?

5. 就擴充套件該錶空間,為其增加更多的儲存空間。有三種方法:

1. 增加資料檔案

sql> alter tablespace sp01 add datafile 『d:/test/sp01.dbf』 size 20m;

2. 增加資料檔案的大小

sql> alter tablespace 表空間名 『d:/test/sp01.dbf』 resize 20m;

這裡需要注意的是資料檔案的大小不要超過500m。

3. 設定檔案的自動增長。

sql> alter tablespace 表空間名 『d:/test/sp01.dbf』 autoextend on next 10m maxsize 500m;

 移動資料檔案

有時,如果你的資料檔案所在的磁碟損壞時,該資料檔案將不能再使用,為了能夠重新使用,需要將這些檔案的副本移動到其它的磁碟,然後恢復。

下面以移動資料檔案sp01.dbf為例來說明:

1. 確定資料檔案所在的表空間

select tablespace_name from dba_data_files where file_name=』d:/test/sp01.dbf』;

2. 使表空間離線

確保資料檔案的一致性,將表空間轉變為offline的狀態。

alter tablespace sp01(表空間名) offline;

3. 使用命令移動資料檔案到指定的目標位置

host move d:/test/sp01.dbf c:/test/sp01.dbf

4. 執行alter tablespace命令

在物理上移動了資料後,還必須執行alter tablespace命令對資料庫檔案進行邏輯修改:

alter tablespace sp01 rename datafile 『d:/test/sp01.dbf』 to 『c:/test/sp01.dbf』;

5. 使得表空間聯機

在移動了資料檔案後,為了使使用者可以訪問該錶空間,必須將其轉變為online狀態。

alter tablespace sp01(表空間名) online;

 顯示表空間資訊

查詢資料字典檢視dba_tablespaces,顯示表空間的資訊:

select tablespace_name from  dba_tablespaces;

 顯示表空間所包含的資料檔案

查詢資料字典檢視dba_data_files,可顯示表空間所包含的資料檔案,如下:

select file_name, bytes from dba_data_files where tablespce_name=』表空間』;

 表空間小結

1. 了解表空間和資料檔案的作用

2. 掌握常用表空間,undo表空間和臨時表空間的建立方法

3. 了解表空間的各個狀態(online, offline, read write, read only)的作用,及如何改變表空間的狀態的方法。

4. 了解移動資料檔案的原因,及使用alter tablespace 和alter datatable命令移動資料檔案的方法。

 其它表空間

除了最常用的資料表空間外,還有其它型別表空間:

1. 索引表空間

2. undo表空間

3. 臨時表空間

4. 非標準塊的表空間

這幾種表空間,大傢伙可以自己參考書籍研究,這裡我就不講。

 其它說明

關於表空間的組成部分 段/區/塊,我們在後面給大家講解。

DM資料庫表空間管理

表空間解釋 所有的資料庫物件都存放在指定的空間中 但主要存放的是表資料,所以稱作表空間。當我們在規劃資料庫結構時需要考慮如何管理資料庫中的相關檔案,每個表空間儲存什麼資料,在表空間中建立幾個多大的資料檔案,以及資料檔案儲存的位置等。下面介紹表空間的管理 在建立 dm 資料庫時,會自動建立 5 個表空...

DM資料庫表空間管理

1 檢視表空間 dba tablespaces 2 達夢資料庫表空間 system 資料字典資訊,動態效能檢視 roll 資料庫執行中的回滾記錄 main 資料庫的預設表空間,存放的真實資料。建立使用者或者建立數 據庫物件不指定表空間,就放在預設表空間中。hmain huge 表空間 temp 臨時...

管理表空間和資料檔案

完成這一課的學習後,您應該能達到下列目標 確定表空間和資料檔案的用途 建立表空間 管理表空間 使用 oracle 管理檔案 oracle managed files,omf 建立和管理表空間 表空間 某一時刻只能屬於乙個資料庫 由乙個或多個資料檔案組成 可進一步劃分為邏輯儲存單元 資料檔案 只能屬於...