十4、oracle 數據庫管理--管理表空間和數據文件

1、概念
表空間是數據庫的邏輯組成部分。
從物理上講,數據庫數據存放在數據文件中;
從邏輯上講,數據庫數據則是存放在表空間中,表空間由一個或多個數據文件組成。數據庫

            

2、數據庫的邏輯結構
oracle中邏輯結構包括表空間、段、區和塊。
說明一下數據庫由表空間構成,而表空間又是由段構成,而段又是由區構成,而區又是由oracle塊構成的這樣的一種結構,能夠提升數據庫的效率。oracle

           

3、表空間
一、概念
表空間用於從邏輯上組織數據庫的數據。數據庫邏輯上是由一個或是多個表空間組成的。經過表空間能夠達到如下做用:
1)、控制數據庫佔用的磁盤空間
2)、dba能夠將不一樣數據類型部署到不一樣的位置,這樣有利於提升i/o性能,同時利於備份和恢復等管理操做。性能

             

二、創建表空間
創建表空間是使用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;spa

三、改變表空間的狀態
當創建表空間時,表空間處於聯機的(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;)orm

咱們給你們舉一個實例,說明只讀特性:
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;對象

           

四、刪除表空間
通常狀況下,由特權用戶或是dba來操做,若是是其它用戶操做,那麼要求用戶具備drop tablespace 系統權限。
drop tablespace ‘表空間’ including contents and datafiles;
eg、drop TABLESPACE DATA01 including contents and datafiles;
說明:including contents表示刪除表空間時,刪除該空間的全部數據庫對象,而datafiles表示將數據庫文件也刪除。索引

              

五、擴展表空間
表空間是由數據文件組成的,表空間的大小實際上就是數據文件相加後的大小。那麼咱們能夠想象,假定表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;部署

             

六、移動數據文件
有時,若是你的數據文件所在的磁盤損壞時,該數據文件將不能再使用,爲了可以從新使用,須要將這些文件的副本移動到其它的磁盤,而後恢復。
下面以移動數據文件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;it

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;table

             

七、顯示錶空間信息
查詢數據字典視圖dba_tablespaces,顯示錶空間的信息:
select tablespace_name from dba_tablespaces;
顯示錶空間所包含的數據文件
查詢數據字典視圖dba_data_files,可顯示錶空間所包含的數據文件,以下:
select file_name, bytes from dba_data_files where tablespace_name='表空間';

        

4、表空間小結
1. 瞭解表空間和數據文件的做用
2. 掌握經常使用表空間,undo表空間和臨時表空間的創建方法
3. 瞭解表空間的各個狀態(online, offline, read write, read only)的做用,及如何改變表空間的狀態的方法。
4. 瞭解移動數據文件的緣由,及使用alter tablespace 和alter datatable命令移動數據文件的方法。

               

5、其它表空間
除了最經常使用的數據表空間外,還有其它類型表空間:
1. 索引表空間
2. undo表空間
3. 臨時表空間
4. 非標準塊的表空間
這幾種表空間,你們夥能夠本身參考書籍研究,這裏我就不講。

            

6、其它說明關於表空間的組成部分 段/區/塊,咱們在後面給你們講解。

相關文章
相關標籤/搜索