基礎知識5——表空間和資料檔案
表空間和資料檔案
邏輯上資料儲存在段(一般是表)中,物理上講,資料儲存在資料檔案(datafile)中.
表空間是二者的抽象,一個表空間可能包含多個段,並由多個資料檔案組成,段和資料檔案沒有直接關係.資料檔案可以作為檔案系統中的檔案存在,10g開始也可以作為自動儲存管理(automatic storage management ASM)裝置上的檔案而存在.
虛線表示段和資料檔案的多對多關係,應避免這種情況存在.
典型的段是表一個段可以僅存在於一個表空間中.
oracle塊是資料庫的基本I/O單元,資料檔案設定為連續編號的oracle塊.對於表空間來說,oracle塊大小固定不變,預設8KB
多個塊組成了區間extent,區間是一個資料檔案中一組連續編號的oracle塊.
一定要避免作業系統塊大小超過oracle塊大小!
資料儲存在段中,檢視DBA_SEGMENTS描述資料庫中每個段:
select segment_type,count(1) from dba_segments group by segment_type order by segment_type
SEGMENT_TYPE COUNT(1)
----------------------------------------
CLUSTER 10
INDEX 1698
INDEX PARTITION 276
LOB PARTITION 1
LOBINDEX 551
LOBSEGMENT 551
NESTED TABLE 11
ROLLBACK 1
TABLE 1332
TABLE PARTITION 128
TYPE2 UNDO 10
TABLE 包含資料行的堆結構表,典型的段是表,但不能說表就是段,還有更復雜的表組織使用其他段型別.
INDEX 索引是鍵值的有序列表,相應的指標rowid指向每行的物理位置,rowid指定行位於哪個資料檔案的哪個oracle塊中,並指定行在塊中的編號
TYPE2 UNDO 撤銷段,儲存資料的更改前版本,為了提供完整性(回滾,讀取一致性和隔離),這些是必須的.
ROLLBACK 9i開始,引入了基於撤銷段的自動撤銷管理,總有一個回滾段保護用於建立資料庫的事務
TABLE PARTITION 可將表分成多個區,可將一個表分不到多個表空間中.
INDEX PARTITION 預設是一個索引在一個段中,但也可對索引進行分割槽,如果對錶進行分割槽,通常也會對這些表上的索引進行分割槽.
LOBSEGMENT LOBINDEX LOB PARTITION 如果將列定義為大物件資料型別,那麼僅在表本身儲存一個指標,指向列資料實際所在的不同段中的條目,
LOB可以擁有在此基礎上構建的索引以便快速訪問物件中的資料,也可以對LOB進行分割槽.
CLUSTER cluster段包含多個表,分割槽將一個表分佈在多個段中,而cluster相反,允許將多個表反規範化(denormalize)為一個段.
NESTED TABLE 如果一個表列定義為本身就具有的列使用者定義的物件型別,那麼列可以作為巢狀表,儲存在自身的段中.
每個段都有一個或多個區間,建立段時oracle將在指定的任何表空間中為其分配區間,最後隨著資料的輸入,區間被填滿.此後oracle將在同一表空間(不一定在同一個資料檔案中)分配第二個區間.
一個區間由一組連續編號的塊組成.
檔案儲存技術
資料檔案可儲存在四類裝置上:本地檔案系統,群集檔案系統,原始裝置和ASM磁碟組.
本地檔案系統上的檔案:最簡單的資料檔案,磁碟目錄結構的普通作業系統檔案.
群集檔案系統上的檔案:群集檔案系統是外部磁碟,同時安裝在多個計算機上.群集檔案系統調停群集中所有計算機上執行的程式到磁碟的訪問.使用群集檔案系統是一種RAC實現方法:資料庫必須位於要開啟它的所有例項可以訪問的磁碟上. oracle公司的OCFS(oracleclustered file system oracle群集檔案系統)是個好選擇,OCFS最先為沒有適當群集檔案系統的linux和windows編寫,10g被遷移到其它所有主流作業系統上.
原始裝置上的檔案:還可能在根本沒有檔案系統的磁碟上建立資料檔案.
ASM裝置上的檔案:ASM是10g引入的功能,是檔案系統的替代品,基於資料檔案儲存.
有人認為原始裝置效能最好,在現代磁碟和檔案系統技術前,此觀點無法立足,而且難以管理,會被淘汰.
ASM:oracle提供的邏輯卷管理器,與資料庫繫結在一起,通常的做法是購買一組原始磁碟,將磁碟交給oracle,讓oracle處理,系統管理員根本不需要考慮如何建立檔案系統.ASM只能儲存資料庫檔案,不能儲存二進位制檔案,始終必須將oracle主目錄儲存在常規檔案系統上.
練習,看看資料庫的物理結構
控制檔案的名稱和大小
select name,block_size*file_size_blks bytes from v$controlfile
NAME BYTES
-------------------------------------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\CONTROL01.CTL 7340032
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\CONTROL02.CTL 7340032
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\CONTROL03.CTL 7340032
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\CONTROL04.CTL 7340032
確定聯機重做日誌檔案成員名稱,大小:
select member,bytes from v$log join v$logfile using (group#);
MEMBER BYTES
----------------------------------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\REDO03.LOG 52428800
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\REDO02.LOG 52428800
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\REDO01.LOG 52428800
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\REDO01A.LOG 52428800
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\REDO02A.LOG 52428800
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\REDO03A.LOG 52428800
確定資料檔案和臨時檔案的名稱,大小:
select name,bytes from v$datafile
union all
select name,bytes from v$tempfile
NAME BYTES
----------------------------------------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\SYSTEM01.DBF 503316480
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\UNDOTBS01.DBF 36700160
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\SYSAUX01.DBF 272629760
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\USERS01.DBF 5242880
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\EXAMPLE01.DBF 104857600
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\BOBTEST.DBF 1048576
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\TEMP01.DBF 20971520
邏輯上資料儲存在段(一般是表)中,物理上講,資料儲存在資料檔案(datafile)中.
表空間是二者的抽象,一個表空間可能包含多個段,並由多個資料檔案組成,段和資料檔案沒有直接關係.資料檔案可以作為檔案系統中的檔案存在,10g開始也可以作為自動儲存管理(automatic storage management ASM)裝置上的檔案而存在.
虛線表示段和資料檔案的多對多關係,應避免這種情況存在.
典型的段是表一個段可以僅存在於一個表空間中.
oracle塊是資料庫的基本I/O單元,資料檔案設定為連續編號的oracle塊.對於表空間來說,oracle塊大小固定不變,預設8KB
多個塊組成了區間extent,區間是一個資料檔案中一組連續編號的oracle塊.
一定要避免作業系統塊大小超過oracle塊大小!
資料儲存在段中,檢視DBA_SEGMENTS描述資料庫中每個段:
select segment_type,count(1) from dba_segments group by segment_type order by segment_type
SEGMENT_TYPE COUNT(1)
----------------------------------------
CLUSTER 10
INDEX 1698
INDEX PARTITION 276
LOB PARTITION 1
LOBINDEX 551
LOBSEGMENT 551
NESTED TABLE 11
ROLLBACK 1
TABLE 1332
TABLE PARTITION 128
TYPE2 UNDO 10
TABLE 包含資料行的堆結構表,典型的段是表,但不能說表就是段,還有更復雜的表組織使用其他段型別.
INDEX 索引是鍵值的有序列表,相應的指標rowid指向每行的物理位置,rowid指定行位於哪個資料檔案的哪個oracle塊中,並指定行在塊中的編號
TYPE2 UNDO 撤銷段,儲存資料的更改前版本,為了提供完整性(回滾,讀取一致性和隔離),這些是必須的.
ROLLBACK 9i開始,引入了基於撤銷段的自動撤銷管理,總有一個回滾段保護用於建立資料庫的事務
TABLE PARTITION 可將表分成多個區,可將一個表分不到多個表空間中.
INDEX PARTITION 預設是一個索引在一個段中,但也可對索引進行分割槽,如果對錶進行分割槽,通常也會對這些表上的索引進行分割槽.
LOBSEGMENT LOBINDEX LOB PARTITION 如果將列定義為大物件資料型別,那麼僅在表本身儲存一個指標,指向列資料實際所在的不同段中的條目,
LOB可以擁有在此基礎上構建的索引以便快速訪問物件中的資料,也可以對LOB進行分割槽.
CLUSTER cluster段包含多個表,分割槽將一個表分佈在多個段中,而cluster相反,允許將多個表反規範化(denormalize)為一個段.
NESTED TABLE 如果一個表列定義為本身就具有的列使用者定義的物件型別,那麼列可以作為巢狀表,儲存在自身的段中.
每個段都有一個或多個區間,建立段時oracle將在指定的任何表空間中為其分配區間,最後隨著資料的輸入,區間被填滿.此後oracle將在同一表空間(不一定在同一個資料檔案中)分配第二個區間.
一個區間由一組連續編號的塊組成.
檔案儲存技術
資料檔案可儲存在四類裝置上:本地檔案系統,群集檔案系統,原始裝置和ASM磁碟組.
本地檔案系統上的檔案:最簡單的資料檔案,磁碟目錄結構的普通作業系統檔案.
群集檔案系統上的檔案:群集檔案系統是外部磁碟,同時安裝在多個計算機上.群集檔案系統調停群集中所有計算機上執行的程式到磁碟的訪問.使用群集檔案系統是一種RAC實現方法:資料庫必須位於要開啟它的所有例項可以訪問的磁碟上. oracle公司的OCFS(oracleclustered file system oracle群集檔案系統)是個好選擇,OCFS最先為沒有適當群集檔案系統的linux和windows編寫,10g被遷移到其它所有主流作業系統上.
原始裝置上的檔案:還可能在根本沒有檔案系統的磁碟上建立資料檔案.
ASM裝置上的檔案:ASM是10g引入的功能,是檔案系統的替代品,基於資料檔案儲存.
有人認為原始裝置效能最好,在現代磁碟和檔案系統技術前,此觀點無法立足,而且難以管理,會被淘汰.
ASM:oracle提供的邏輯卷管理器,與資料庫繫結在一起,通常的做法是購買一組原始磁碟,將磁碟交給oracle,讓oracle處理,系統管理員根本不需要考慮如何建立檔案系統.ASM只能儲存資料庫檔案,不能儲存二進位制檔案,始終必須將oracle主目錄儲存在常規檔案系統上.
練習,看看資料庫的物理結構
控制檔案的名稱和大小
select name,block_size*file_size_blks bytes from v$controlfile
NAME BYTES
-------------------------------------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\CONTROL01.CTL 7340032
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\CONTROL02.CTL 7340032
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\CONTROL03.CTL 7340032
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\CONTROL04.CTL 7340032
確定聯機重做日誌檔案成員名稱,大小:
select member,bytes from v$log join v$logfile using (group#);
MEMBER BYTES
----------------------------------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\REDO03.LOG 52428800
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\REDO02.LOG 52428800
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\REDO01.LOG 52428800
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\REDO01A.LOG 52428800
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\REDO02A.LOG 52428800
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\REDO03A.LOG 52428800
確定資料檔案和臨時檔案的名稱,大小:
select name,bytes from v$datafile
union all
select name,bytes from v$tempfile
NAME BYTES
----------------------------------------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\SYSTEM01.DBF 503316480
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\UNDOTBS01.DBF 36700160
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\SYSAUX01.DBF 272629760
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\USERS01.DBF 5242880
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\EXAMPLE01.DBF 104857600
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\BOBTEST.DBF 1048576
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BOB\TEMP01.DBF 20971520
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25025926/viewspace-1067848/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基礎知識5——建立和管理表空間
- oracle基礎管理——表空間和資料檔案Oracle
- oracle基礎練習6章 表空間和資料檔案Oracle
- 表空間和資料檔案管理
- 表空間&資料檔案和控制檔案(zt)
- 表空間和資料檔案的管理
- UNDO表空間資料檔案丟失處理(一)預備知識
- 重新命名資料檔案和表空間
- 移動資料檔案、系統表空間檔案、臨時表空間檔案
- Oracle 表空間與資料檔案Oracle
- oracle 資料檔案表空間管理Oracle
- MySQL innodb共享表空間新增表空間資料檔案方法MySql
- 表空間中有資料也可以壓縮表空間(資料檔案)大小
- 9.管理表空間和資料檔案(筆記)筆記
- 刪除表空間和表空間包含的檔案
- oracle 表空間 資料檔案 筆記Oracle筆記
- 資料檔案,表空間的移動
- 表空間資料檔案故障處理
- 線上遷移表空間資料檔案
- Oracle 表空間資料檔案遷移Oracle
- 表空間新增資料檔案的疑惑
- 基礎知識6——建立和管理配置檔案
- [基礎知識] Redis 配置檔案Redis
- Oracle表空間小知識Oracle
- 檢視Oracle資料庫表空間大小,是否需要增加表空間的資料檔案Oracle資料庫
- oracle 普通表空間資料檔案壞塊Oracle
- 表空間(資料檔案shrink)收縮示例
- oracle 回收表空間的資料檔案大小Oracle
- 誤刪oracle資料庫表空間檔案Oracle資料庫
- InnoDB資料表空間檔案平滑遷移
- 錯誤新增表空間的資料檔案
- oracle spatial之基礎知識之四空間索引Oracle索引
- Data Guard 主端OFFLINE資料檔案和表空間
- 表空間和資料檔案的離線是分開的
- Sqlserver delete表部分資料釋放資料檔案空間SQLServerdelete
- Oracle資料庫表空間的資料檔案大小上限。Oracle資料庫
- 資料庫基礎知識資料庫
- 新建的表空間(或資料檔案)丟失以及控制檔案丟失,有新建表空間(或資料檔案)前的控制文