資料檔案頭塊保留大小、ROWID、資料檔案最大大小等資料庫限制的說明
學習自EYGLE循序漸進ORACLE及官方文件。
db_block_size=4KB,檔案頭保留16個資料塊,即64KB。
db_block_size=8KB,檔案頭保留8個資料塊,即64KB。
db_block_size=16KB,檔案頭保留4個資料塊,即64KB。
db_block_size=32KB,檔案頭保留4個資料塊,即128KB。
預設是db_block_size=8KB,此時 ORACLE資料檔案頭的8個資料塊作用是:
資料塊1和2記錄資料檔案頭資訊。3-8用於記錄extent-區間的點陣圖資訊 --11G中要保留到128個塊???
################################
ORACLE ROWID分為物理ROWID,邏輯ROWID。
索引組織表(IOTs)使用邏輯ROWID,其它型別的表使用物理ROWID。
ROWID可以惟一標識一條記錄,所以索引中儲存了ROWID的值,通過訪問索引,得到ROWID,再定位到記錄。
ROWID採用Base64編碼,共18位代表80位二進位制數,佔用10個位元組。
每組字元代表不同的含義,18位最大定址空間“32G”。。
對一條行ID的解析:OOOOOO.FFF.BBBBBB.RRR --其中.是為了方便觀看手動增加
OOOOOO: 1-6位:物件id
FFF: 7-9位:檔案id
BBBBBB: 10-15位:塊id
RRR: 16-18位:行id
對於Base64編碼,共18位代表80位二進位制數,計算方法是:
32bit obj# + 10bit file# + 22bit block# + 16bit row#
通過ROWID計算資料塊的相關資訊,詳見:http://blog.csdn.net/q947817003/article/details/11490051
根據small file tablespace的ROWID,計算出表空間、資料檔案、BOOCK中行最大數如下:
根據ROWID的構成: ---注:2^10這種寫法代表2的10次方,等於1024.
每個表空間最大檔案數: 2^10 1024 ,去掉全0和全1 通常1022個 ---實驗測試出是1023個,見:資料檔案個數大於1024時ORACLE資料檔案FILE_ID及RELATIVE_FNO的變化示例
每資料檔案最大資料塊數量:filesize=block_size*2^22 ,也就是4M個ORACLE BLOCK
db_block_size=4KB,4KB*4M=16384M 16G
db_block_size=8KB,8KB*4M=32768M 32G 8*1024*4M=8*4G=32G
db_block_size=16KB,16KB*4M=65536M 64G
db_block_size=32KB,32KB*4M=131072M 128G
#########################################################
大檔案表空間的ROWID格式為:
OOOOOO.LLLLLLLLL.RRR
OOOOOO: 1-6位:物件id
LLLLLLLLL: 7-15位:塊id
RRR: 16-18位:行id
L代表BLOCK號,代替了小檔案表空間中ROWID中的file# + block#的位置.
這樣大檔案表空間的資料檔案支援的BLOCK數量最多是:2bit. 2^32=4G.
db_block_size=4KB,4KB*4G= 16T
db_block_size=8KB,8KB*4G= 32T 8*1024*4G=8*4TB=32TB
db_block_size=16KB,16KB*4G= 64T
db_block_size=32KB,32KB*4G=128TB
本地管理表空間中設定不同大小的db_block_size時資料檔案頭保留空間對應如下:
db_block_size=2KB,檔案頭保留32個資料塊,即64KB。db_block_size=4KB,檔案頭保留16個資料塊,即64KB。
db_block_size=8KB,檔案頭保留8個資料塊,即64KB。
db_block_size=16KB,檔案頭保留4個資料塊,即64KB。
db_block_size=32KB,檔案頭保留4個資料塊,即128KB。
預設是db_block_size=8KB,此時 ORACLE資料檔案頭的8個資料塊作用是:
資料塊1和2記錄資料檔案頭資訊。3-8用於記錄extent-區間的點陣圖資訊 --11G中要保留到128個塊???
################################
Oracle資料庫中的資料檔案的最大數量是有限的(通常為64K檔案)。--來自官方文件
表空間支援的最大資料檔案大小的演算法:
分兩種情況:smallfile tablespace與bigfile tablespacesmallfile tablespace的ROWID
記錄儲存所在資料檔案(file#),所屬資料庫物件,所在資料塊中的行號,這些屬性合併起來構成了ORACLE ROWID.ORACLE ROWID分為物理ROWID,邏輯ROWID。
索引組織表(IOTs)使用邏輯ROWID,其它型別的表使用物理ROWID。
ROWID可以惟一標識一條記錄,所以索引中儲存了ROWID的值,通過訪問索引,得到ROWID,再定位到記錄。
ROWID採用Base64編碼,共18位代表80位二進位制數,佔用10個位元組。
每組字元代表不同的含義,18位最大定址空間“32G”。。
對一條行ID的解析:OOOOOO.FFF.BBBBBB.RRR --其中.是為了方便觀看手動增加
OOOOOO: 1-6位:物件id
FFF: 7-9位:檔案id
BBBBBB: 10-15位:塊id
RRR: 16-18位:行id
對於Base64編碼,共18位代表80位二進位制數,計算方法是:
32bit obj# + 10bit file# + 22bit block# + 16bit row#
通過ROWID計算資料塊的相關資訊,詳見:http://blog.csdn.net/q947817003/article/details/11490051
根據small file tablespace的ROWID,計算出表空間、資料檔案、BOOCK中行最大數如下:
根據ROWID的構成: ---注:2^10這種寫法代表2的10次方,等於1024.
每個表空間最大檔案數: 2^10 1024 ,去掉全0和全1 通常1022個 ---實驗測試出是1023個,見:資料檔案個數大於1024時ORACLE資料檔案FILE_ID及RELATIVE_FNO的變化示例
每資料檔案最大資料塊數量:filesize=block_size*2^22 ,也就是4M個ORACLE BLOCK
每個BLOKC中行數是: 2^16 65536,也就是每個BLOCK最多65536條記錄
每個資料庫最多65536個-64K個資料檔案(實驗測試出是65534----官方文件上是65533-http://docs.oracle.com/cd/B19306_01/server.102/b14237/limits002.htm#i287915),最多支援64K個表空間,因為每個表空間最少需要包含一個資料檔案。引出新問題:如果資料庫有大於1024個資料檔案,ORACLE如何通過ROWID定位資料檔案呢?
--詳見:資料檔案個數大於1024時ORACLE資料檔案FILE_ID及RELATIVE_FNO的變化示例
smallfile tablespace設定不同大小的db_block_size時資料檔案允許的最大大小
db_block_size=2KB,2KB*4M=8192M 8Gdb_block_size=4KB,4KB*4M=16384M 16G
db_block_size=8KB,8KB*4M=32768M 32G 8*1024*4M=8*4G=32G
db_block_size=16KB,16KB*4M=65536M 64G
db_block_size=32KB,32KB*4M=131072M 128G
#########################################################
BIGFILE表空間的ROWID
因為大檔案表空間只能包含一個檔案,所以ROWID中不需要file#-檔案ID。大檔案表空間的ROWID格式為:
OOOOOO.LLLLLLLLL.RRR
OOOOOO: 1-6位:物件id
LLLLLLLLL: 7-15位:塊id
RRR: 16-18位:行id
L代表BLOCK號,代替了小檔案表空間中ROWID中的file# + block#的位置.
這樣大檔案表空間的資料檔案支援的BLOCK數量最多是:2bit. 2^32=4G.
bigfile tablespace設定不同大小的db_block_size時資料檔案允許的最大大小
db_block_size=2KB,2KB*4G= 8Tdb_block_size=4KB,4KB*4G= 16T
db_block_size=8KB,8KB*4G= 32T 8*1024*4G=8*4TB=32TB
db_block_size=16KB,16KB*4G= 64T
db_block_size=32KB,32KB*4G=128TB
相關文章
- oracle 資料檔案(Datafile ) 大小 限制 說明Oracle
- oracle資料檔案大小限制Oracle
- Oracle資料檔案大小的限制Oracle
- 資料檔案大小和資料庫的關係資料庫
- 檢視資料庫資料檔案的總大小資料庫
- 注意資料檔案最大塊數限制
- resize 資料檔案的大小
- 檢視資料檔案大小
- Oracle資料庫表空間的資料檔案大小上限。Oracle資料庫
- 查詢資料檔案大小和實際大小,並收縮資料檔案(轉)
- java 獲取資料夾大小、檔案大小、檔案個數Java
- 查詢資料檔案大小和實際大小,並收縮資料檔案(原創)
- oracle資料檔案頭轉儲說明Oracle
- 擴充套件資料檔案大小套件
- 檢視Windows檔案系統資料塊大小的方法Windows
- 關於控制檔案與資料檔案頭資訊的說明(zt)
- 資料庫資料恢復-SQL SERVER資料庫檔案大小變為“0”的資料恢復方案資料庫資料恢復SQLServer
- 根據rowid查詢資料檔案號,資料塊號
- oracle 回收表空間的資料檔案大小Oracle
- [20121114]Oracle資料檔案大小限制.txtOracle
- 建立資料庫檔案-日誌檔案-次要資料庫檔案資料庫
- Linux 資料夾和檔案大小排序Linux排序
- du df 檢視檔案和資料夾大小
- SQL Server 監視資料檔案大小變化SQLServer
- Oracle資料庫資料檔案small file的最大值Oracle資料庫
- 資料庫引數檔案控制檔案日誌檔案資料檔案跟蹤檔案等8大檔案的字典資料庫
- MSSQL資料庫資料恢復案例:ndf檔案大小變為0KB恢復資料SQL資料庫資料恢復
- 關於資料庫檔案最大數資料庫
- 更改RAC資料庫日誌檔案大小及數量 for ASM資料庫ASM
- Oracle 資料檔案 reuse 屬性 說明Oracle
- RMAN備份檔案遠大於資料庫大小的原因分析資料庫
- ORACLE中資料檔案大小及數量限制初探Oracle
- 檢視Oracle資料庫表空間大小,是否需要增加表空間的資料檔案Oracle資料庫
- POST表單資料大小的限制
- oracle資料檔案個數限制Oracle
- 2.6.5 指定資料塊大小
- 資料庫檔案和檔案組資料庫
- 如何獲取 PostgreSQL 資料庫中的表大小、資料庫大小、索引大小、模式大小、表空間大小、列大小SQL資料庫索引模式