標籤:
一、概念
資料表空間是資料庫的邏輯組成部分。
從物理上講,資料庫資料存放在資料檔案中;
從邏輯上講,資料庫資料則是存放在資料表空間中,資料表空間由一個或多個資料檔案組成。
二、資料庫的邏輯結構
oracle中邏輯結構包括資料表空間、段、區和塊。
說明一下資料庫由資料表空間構成,而資料表空間又是由段構成,而段又是由區構成,而區又是由oracle塊構成的這樣的一種結構,可以提高資料庫的效率。
三、資料表空間
1、概念
資料表空間用於從邏輯上組織資料庫的資料。資料庫邏輯上是由一個或是多個資料表空間組成的。通過資料表空間可以達到以下作用:
1)、控制資料庫佔用的磁碟空間
2)、dba可以將不同資料類型部署到不同的位置,這樣有利於提高i/o效能,同時利於備份和恢複等管理操作。
2、建立資料表空間
建立資料表空間是使用crate tablespace命令完成的,需要注意的是,一般情況下,建立資料表空間是特權使用者或是dba來執行的,如果用其它使用者來建立資料表空間,則使用者必須要具有create tablespace的系統許可權。
1)、建立資料資料表空間
在建立資料庫後,為便於管理表,最好建立自己的資料表空間
--路徑D:\dev\oracle\product\10.2.0\要存在,否則建立不成功
create tablespace data01 datafile ‘D:\dev\oracle\product\10.2.0\dada01.dbf‘ size 20m uniform size 128k;
說明:執行完上述命令後,會建立名稱為data01的資料表空間,並為該資料表空間建立名稱為data01.dbf的資料檔案,區的大小為128k
2)、使用資料資料表空間
create table mypart(
deptno number(4),
dname varchar2(14),
loc varchar2(13)
) tablespace data01;
3、改變資料表空間的狀態
當建立資料表空間時,資料表空間處於聯機的(online)狀態,此時該資料表空間是可以訪問的,並且該資料表空間是可以讀寫的,即可以查詢該資料表空間的資料,而且還可以在資料表空間執行各種語句。但是在進行系統維護或是資料維護時,可能需要改變資料表空間的狀態。一般情況下,由特權使用者或是dba來操作。
1)、使資料表空間離線
alter tablespace 資料表空間名 offline;
eg、alter tablespace data01 offline;--資料表空間名不能加單引號
2)、使資料表空間聯機
alter tablespace 資料表空間名 online;
eg、alter tablespace data01 online;
3)、唯讀資料表空間
當建立資料表空間時,資料表空間可以讀寫,如果不希望在該資料表空間上執行update,delete,insert操作,那麼可以將資料表空間修改為唯讀
alter tablespace 資料表空間名 read only;
注意:修改為可寫是alter tablespace 資料表空間名 read write;)
我們給大家舉一個執行個體,說明唯讀特性:
1)、知道資料表空間名,顯示該資料表空間包括的所有表
select * from all_tables where tablespace_name=’資料表空間名’;
eg、select * from all_tables where tablespace_name=‘DATA01‘; --DATA01要大寫格式
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;
4、刪除資料表空間
一般情況下,由特權使用者或是dba來操作,如果是其它使用者操作,那麼要求使用者具有drop tablespace 系統許可權。
drop tablespace ‘資料表空間’ including contents and datafiles;
eg、drop TABLESPACE DATA01 including contents and datafiles;
說明:including contents表示刪除資料表空間時,刪除該空間的所有資料庫物件,而datafiles表示將資料庫檔案也刪除。
5、擴充資料表空間
資料表空間是由資料檔案組成的,資料表空間的大小實際上就是資料檔案相加後的大小。那麼我們可以想象,假定表employee存放到data01資料表空間上,初始大小就是2M,當資料滿2M空間後,如果在向employee表插入資料,這樣就會顯示空間不足的錯誤。
案例說明:
1. 建立一個資料表空間sp01
eg、create tablespace sp01 datafile ‘D:\dev\oracle\product\10.2.0\dada01.dbf‘ size 1m uniform size 128k;
2. 在該資料表空間上建立一個普通表mydment其結構和dept一樣
create table mypart(
deptno number(4),
dname varchar2(14),
loc varchar2(13)
) tablespace sp01;
3. 向該表中加入資料insert into mydment select * from dept;
4. 當一定時候就會出現無法擴充的問題,怎麼辦?
5. 就擴充該資料表空間,為其增加更多的儲存空間。
有三種方法:
1. 增加資料檔案
SQL> alter tablespace sp01 add datafile ‘D:\dev\oracle\product\10.2.0\dada02.dbf‘ size 1m;
2. 修改資料檔案的大小
SQL> alter tablespace sp01 ‘D:\dev\oracle\product\10.2.0\dada01.dbf‘ resize 4m;
這裡需要注意的是資料檔案的大小不要超過500m。
3. 設定檔案的自動成長。
SQL> alter tablespace sp01 ‘D:\dev\oracle\product\10.2.0\dada01.dbf‘ autoextend on next 10m maxsize 500m;
6、移動資料檔案
有時,如果你的資料檔案所在的磁碟損壞時,該資料檔案將不能再使用,為了能夠重新使用,需要將這些檔案的副本移動到其它的磁碟,然後恢複。
下面以移動資料檔案sp01.dbf為例來說明:
1. 確定資料檔案所在的資料表空間
select tablespace_name from dba_data_files where file_name=upper(‘D:\dev\oracle\product\10.2.0\dada01.dbf‘);
2. 使資料表空間離線
--確保資料檔案的一致性,將資料表空間轉變為offline的狀態。
alter tablespace sp01 offline;
3. 使用命令移動資料檔案到指定的目標位置
host move D:\dev\oracle\product\10.2.0\dada01.dbf c:\dada01.dbf;
4. 執行alter tablespace 命令
在物理上移動了資料後,還必須執行alter tablespace命令對資料庫檔案進行邏輯修改:
alter tablespace sp01 rename datafile ‘D:\dev\oracle\product\10.2.0\dada01.dbf‘ to ‘c:\sp01.dbf‘;
5. 使得資料表空間聯機
在移動了資料檔案後,為了使使用者可以訪問該資料表空間,必須將其轉變為online狀態。
alter tablespace sp01 online;
7、顯示資料表空間資訊
查詢資料字典視圖dba_tablespaces,顯示資料表空間的資訊:
select tablespace_name from dba_tablespaces;
顯示資料表空間所包含的資料檔案
查詢資料字典視圖dba_data_files,可顯示資料表空間所包含的資料檔案,如下:
select file_name, bytes from dba_data_files where tablespace_name=‘資料表空間‘;
四、資料表空間小結
1. 瞭解資料表空間和資料檔案的作用
2. 掌握常用資料表空間,undo資料表空間和暫存資料表空間的建立方法
3. 瞭解資料表空間的各個狀態(online, offline, read write, read only)的作用,及如何改變資料表空間的狀態的方法。
4. 瞭解移動資料檔案的原因,及使用alter tablespace 和alter datatable命令移動資料檔案的方法。
五、其它資料表空間
除了最常用的資料資料表空間外,還有其它類型資料表空間:
1. 索引資料表空間
2. undo資料表空間
3. 暫存資料表空間
4. 非標準塊的資料表空間
這幾種資料表空間,大傢伙可以自己參考書籍研究,這裡我就不講。
六、其它說明
關於資料表空間的組成部分 段/區/塊,我們在後面給大家講解。
十四、oracle 資料庫管理--管理資料表空間和資料檔案