表空間和資料檔案

2021-08-25 15:03:43 字數 3925 閱讀 2172

--*************************===

--authot:_yeexun

--date:發表於 @ 2023年12月26日 10:09:00

--address:jau 17-304

--******************************

管理表空間和資料檔案

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

資料庫的邏輯結構

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

資料庫是由表空間構成,表空間由段構成,段由區構成,區由oracle塊構成,這種結構提高了oracle的效率。

tablespace:有名字,oracle有很多表空間,表空間具有可伸縮性,所有的表空間構成了oracle資料庫。

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

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

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

1.建立表空間

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

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

sql>createtablespacesp001datafile'd:/sp001.dbf'size20muniformsize128k

說明:建立名稱為data01 的表空間,並為該錶建立名稱為 data01.dbf 的資料檔案,區的大小為 128k 。

2.使用表空間

sql>createtablemypart(deptnonumber(4),dnamevarchar2(14),locvarchar2(13))

tablespacesp001;

如果省略了後面的tablespacesp001 ,那麼此表將放到預設的 system 表空間裡。

3.改變表空間的狀態。

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

a).使表空間離線

sql>altertablespace表空間名稱 offline;

b).使表空間聯機

sql>altertablespace表空間名稱online;

c).使表空間唯讀

sql>altertablespace表空間名稱 readonly;

d).使表空間可讀寫

sql>altertablespace表空間名稱 readwrite;

e).查詢某個表空間裡所有的表

sql>select*fromall_tableswheretablespace_name='表空間名 '

f).查詢某個表所屬於的表空間

sql>selecttablespace_name,table_namefromuser_tableswheretable_name='表名稱 '; 4.

刪除表空間

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

droptablespace'表空間名 'includingcontentsanddatafiles;

說明:includingcontents:表示刪除表空間時,刪除該錶空間的所有數 據 物件。

datafiles:表示將資料庫檔案也刪除。

5.擴充套件表空間

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

下面是乙個案例,說明:

a).建立乙個表空間 sp001 b)

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

c).向該錶空間加入資料 insertintomypartselect*fromdept; d)

.當一定時候就會出現無法擴充套件的問題。

注意:scott 沒有操作表空間的許可權, sys 和 system 有權操作表空間

sql>insertintomypartselect*fromdept;

當執行多次此語句後,到達表空間sp001 的上限 20m ,就會報錯:

ora-01653:表 scott.mypart 無法通過 32( 在表空間 sp001 中 ) 擴充套件。

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

i).增加資料檔案:指的是在表空間裡增加乙個或者多個資料檔案。

sql>altertablespacesp001adddatafile'd:/sp002.dbf'size20m;

ii).增加資料檔案的大小:也就是該錶資料檔案的大小,讓其變得更大

sql>altertablespace表空間名 'd:/sp001.dbf'resize200m;

此處需要注意:資料檔案的大小不要超過500m 。

iii).設這檔案的自動增長:這種方法是比較好。

sql>altertablespace表空間名 'd:/sp001.dbf'autoextendonnext10mmaxsize500m;

oracle規定每個資料檔案不能超過 500m 。

---------------------------------------------

移動資料檔案( 故障處理 )

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

下面是乙個例項

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

sql>selecttablespace_namefromdba_data_fileswherefile_name='d:/sp001,dbf';

2.使表空間離線

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

sql>altertablesapcesp001offline;

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

sql>hostmoved:/sp001.dbfc:/sp001.dbf;

4.執行latertablespace 命令

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

sql>altertablespacesp001renamedatafile'd:/sp001.dbf'to'c:/sp001.dbf';

5.使表空間聯機

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

sql>altertablespacesp001online;

表空間的小結

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

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

3.連線表空間的各個狀態

(online,offline,readwrite,readonly )的作用,及如何改變表空間的狀態的方法

4.了解移動資料檔案的原因( 磁碟毀壞 ) ,以及使用 altertablespace 和 alterdatafile 命令移動資料檔案的方法。

其他表空間

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

1.索引表空間

2.undo表空間

3.臨時表空間

4.非標準塊的表空間

--the end--

oracle表空間和資料檔案

size medium 表空間是資料庫的邏輯組成部分,在物理上講,資料庫資料存放在資料檔案中,從邏輯上講,資料庫則是存放在表空間中,表空間由乙個或者多個資料檔案組成,表空間由段構成,而段又由區構成,而區又由塊構成。表空間從邏輯上組織資料庫的資料,資料庫邏輯上是由乙個或者多個表空間組成,表空間有以下作...

管理表空間和資料檔案

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

管理表空間和資料檔案

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