Oracle ASM Free Space Table
在進行建立檔案或者檔案resize過程中,需要有一個快捷入口,可以迅速的知道當前磁碟有哪些可用的(free狀態的)AU,ASM Free Space Table 簡稱FST表就是提供一個這樣的功能,透過它可以快速的知道哪些allocation table(AT表)後設資料塊中有空閒的AU,它儲存的是一個個的AT表後設資料塊的號碼,FST指示了那個AT表可能包含可用的AUs。當一個磁碟被選擇用來分配AU時,ASM會諮詢磁碟的FST。這允許ASM跳過那些被佔用殆盡的AT塊。FST對於分配是一種最佳方法。FST儲存在每個AT中的第二個塊中。FST表和AT表都被稱為物理後設資料,它們經常位於ASM磁碟的固定的位置。
FST儲存位置
FST儲存在ASM磁碟頭,透過kfed工具可以檢視磁碟頭資訊,其中kfdhdb.fstlocn的值代表了FST位於磁碟頭的第幾個塊(AU)。例如下面的輸出代表了,FST塊位於磁碟頭的塊1,也就是AU 0的第二個塊。(塊從0開始編號)。不管是10g還是11g,FST儲存在每個AT中的第二個塊中。
10g ASM中的PST所在位置
[oracle@jyrac3 lib]$ kfed read /dev/raw/raw3 aun=0 blkn=0 | grep fstlocn kfdhdb.fstlocn: 1 ; 0x0cc: 0x00000001
11g ASM中的PST所在位置
[grid@jyrac1 ~]$ kfed read /dev/raw/raw10 aun=0 blkn=0 | grep fstlocn kfdhdb.fstlocn: 1 ; 0x0cc: 0x00000001
[grid@db1 disks]$ kfed read /dev/oracleasm/disks/RLZY_DATA1 aun=0 blkn=1 | more kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 2 ; 0x002: KFBTYP_FREESPC kfbh.datfmt: 2 ; 0x003: 0x02 kfbh.block.blk: 1 ; 0x004: blk=1 kfbh.block.obj: 2147483651 ; 0x008: disk=3 kfbh.check: 4111437318 ; 0x00c: 0xf50f8e06 kfbh.fcn.base: 3323 ; 0x010: 0x00000cfb kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kfdfsb.aunum: 0 ; 0x000: 0x00000000 kfdfsb.max: 254 ; 0x004: 0x00fe kfdfsb.cnt: 12 ; 0x006: 0x000c kfdfsb.bound: 0 ; 0x008: 0x0000 kfdfsb.flag: 1 ; 0x00a: B=1 kfdfsb.ub1spare: 0 ; 0x00b: 0x00 kfdfsb.spare[0]: 0 ; 0x00c: 0x00000000 kfdfsb.spare[1]: 0 ; 0x010: 0x00000000 kfdfsb.spare[2]: 0 ; 0x014: 0x00000000 kfdfse[0].fse: 0 ; 0x018: FREE=0x0 FRAG=0x0 kfdfse[1].fse: 0 ; 0x019: FREE=0x0 FRAG=0x0 kfdfse[2].fse: 0 ; 0x01a: FREE=0x0 FRAG=0x0 kfdfse[3].fse: 119 ; 0x01b: FREE=0x7 FRAG=0x7 kfdfse[4].fse: 16 ; 0x01c: FREE=0x0 FRAG=0x1 kfdfse[5].fse: 16 ; 0x01d: FREE=0x0 FRAG=0x1 kfdfse[6].fse: 16 ; 0x01e: FREE=0x0 FRAG=0x1 kfdfse[7].fse: 16 ; 0x01f: FREE=0x0 FRAG=0x1 kfdfse[8].fse: 16 ; 0x020: FREE=0x0 FRAG=0x1 kfdfse[9].fse: 16 ; 0x021: FREE=0x0 FRAG=0x1 kfdfse[10].fse: 16 ; 0x022: FREE=0x0 FRAG=0x1 kfdfse[11].fse: 16 ; 0x023: FREE=0x0 FRAG=0x1 kfdfse[12].fse: 0 ; 0x024: FREE=0x0 FRAG=0x0 kfdfse[13].fse: 0 ; 0x025: FREE=0x0 FRAG=0x0 kfdfse[14].fse: 0 ; 0x026: FREE=0x0 FRAG=0x0 kfdfse[15].fse: 0 ; 0x027: FREE=0x0 FRAG=0x0 kfdfse[16].fse: 0 ; 0x028: FREE=0x0 FRAG=0x0 kfdfse[17].fse: 0 ; 0x029: FREE=0x0 FRAG=0x0 kfdfse[18].fse: 0 ; 0x02a: FREE=0x0 FRAG=0x0 kfdfse[19].fse: 0 ; 0x02b: FREE=0x0 FRAG=0x0 kfdfse[20].fse: 0 ; 0x02c: FREE=0x0 FRAG=0x0 kfdfse[21].fse: 0 ; 0x02d: FREE=0x0 FRAG=0x0 kfdfse[22].fse: 0 ; 0x02e: FREE=0x0 FRAG=0x0 kfdfse[23].fse: 0 ; 0x02f: FREE=0x0 FRAG=0x0 ....省略.... kfdfse[4031].fse: 0 ; 0xfd7: FREE=0x0 FRAG=0x0 kfdfse[4032].fse: 0 ; 0xfd8: FREE=0x0 FRAG=0x0 kfdfse[4033].fse: 0 ; 0xfd9: FREE=0x0 FRAG=0x0 kfdfse[4034].fse: 0 ; 0xfda: FREE=0x0 FRAG=0x0 kfdfse[4035].fse: 0 ; 0xfdb: FREE=0x0 FRAG=0x0 kfdfse[4036].fse: 0 ; 0xfdc: FREE=0x0 FRAG=0x0 kfdfse[4037].fse: 0 ; 0xfdd: FREE=0x0 FRAG=0x0 kfdfse[4038].fse: 0 ; 0xfde: FREE=0x0 FRAG=0x0 kfdfse[4039].fse: 0 ; 0xfdf: FREE=0x0 FRAG=0x0
對於這個FST塊,第一個AT表後設資料塊位於AU0:
kfdfsb.aunum: 0 ; 0x000: 0x00000000
這個FST塊最大數量的FST條目可以達到254個,雖然上面kfed的輸出中kfdfse[i]的編號到了4039,也就是有4039+1=4040個條目,但是有效條目只有254個。
kfdfsb.max: 254 ; 0x004: 0x00fe
大的ASM磁碟可能會有超過一個stride,ASM磁碟頭的kfdhdb.mfact顯示了stride的大小(單位為AU),每一個stride有它自己的物理後設資料,這意味著會有它自己的FST表。第二個stride的物理後設資料位於這個stride的第一個AU,我們透過kfed工具看一下:
$ kfed read /dev/sdc1 | grep mfact kfdhdb.mfact: 113792 ; 0x0c0: 0x0001bc80
以上顯示了stride的大小為113792個AU,由於AU是從0開始編號,因此第一個stride最後的AU號是AU 113791,我們可以推算出第二個stride的FST位置是,AU 113792的第一個塊:
[grid@db1 disks]$ kfed read /dev/oracleasm/disks/RLZY_DATA1 aun=113792 blkn=1 | grep type kfbh.type: 2 ; 0x002: KFBTYP_FREESPC
如預期,我們在AU 113792上有另一個FTS表,如果我們還有其他的stride,同樣會在stride的開始AU處有FST表。如下面所示,一個大的ASM磁碟,會有數個stride,這裡展示了在第3到5個stride的開始處的FST表:
[grid@db1 disks]$ kfed read /dev/oracleasm/disks/RLZY_DATA1 aun=227584 blkn=1 | grep type kfbh.type: 2 ; 0x002: KFBTYP_FREESPC [grid@db1 disks]$ kfed read /dev/oracleasm/disks/RLZY_DATA1 aun=341376 blkn=1 | grep type kfbh.type: 2 ; 0x002: KFBTYP_FREESPC [grid@db1 disks]$ kfed read /dev/oracleasm/disks/RLZY_DATA1 aun=455168 blkn=1 | grep type kfbh.type: 2 ; 0x002: KFBTYP_FREESPC
參考
Oracle Automatic Storage Management: Under-the-Hood & Practical Deployment Guide
http://asmsupportguy.blogspot.jp/2013/08/free-space-table.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2131148/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 聊聊dba_temp_free_space的allocated_space和free_space
- 關於Oracle dba_free_space 檢視的研究Oracle
- alter table move與shrink space
- Oracle Free Buffer WaitsOracleAI
- ORA-15041 IN A DISKGROUP ALTHOUGH FREE_MB REPORTS SUFFICIENT SPACE
- 資料庫 sqlite3_get_table,sqlite3_free_table資料庫SQLite
- Oracle ASM神書《撥雲見日 解密Oracle ASM核心》出版了OracleASM解密
- Oracle ASM擴容(NFS)OracleASMNFS
- 【ASM】Oracle asm刪除磁碟組注意事項ASMOracle
- Oracle:TABLE MONITORINGOracle
- Oracle table selectOracle
- Oracle ASM AMDU工具的使用OracleASM
- Oracle ASM Cluster File Systems (ACOracleASM
- Oracle:ASM & 密碼檔案OracleASM密碼
- oracle cache table(轉)Oracle
- Oracle Pipelined Table(轉)Oracle
- ASM磁碟空間假裝耗盡,ORA-15041: diskgroup space exhaustedASM
- Oracle 12C Database File Mapping for Oracle ASM FilesOracleDatabaseAPPASM
- 12C Oracle ASM Filter DriverOracleASMFilter
- Oracle ASM Rebalance執行過程OracleASM
- Oracle Pipelined Table Functions(轉)OracleFunction
- ASM DG Usable_file_MB和Req_mir_free_MB的含義ASM
- Overview of Oracle Flex ASM In Oracle 19c RAC-20220111ViewOracleFlexASM
- 【ASM】Oracle asm磁碟被格式化,如何掛載該磁碟組ASMOracle
- 【Oracle】ASM例項安裝入門OracleASM
- ORACLE ASM磁碟組空間溢位OracleASM
- 2.10.3 使用 Oracle Automatic Storage Management (Oracle ASM) 克隆資料庫OracleASM資料庫
- oracle一次卡頓案例(六)-latch freeOracle
- Oracle 12C ASM asmcmd amdu_extractOracleASM
- Oracle RAC日常運維-ASM磁碟擴容Oracle運維ASM
- Oracle ASM磁碟組擴容(AIX7.1)OracleASMAI
- ORACLE ASM的SSD磁碟空間回收分析OracleASM
- Oracle asm磁碟損壞異常恢復OracleASM
- oracle asm 資料塊重構恢復OracleASM
- 【BUILD_ORACLE】使用ASMLib包搭建ASM磁碟UIOracleASM
- Zabbix報告無交換記憶體主機“Lack of free swap space”問題解決記憶體
- Oracle Table建立引數說明Oracle
- Analyze table對Oracle效能的提升Oracle
- Oracle cluster table(1)_概念介紹Oracle