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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle ASM Disk Used Space DirectoryOracleASM
- How to free space from an ASM diskgroup? (Doc ID 1553744.1)ASM
- Oracle ASM Allocation TableOracleASM
- [Oracle] Shrink space & Table move比較Oracle
- Oracle ASM Partnership and Status TableOracleASM
- Oracle ASM REQUIRED_MIRROR_FREE_MBOracleASMUI
- Oracle 11g alter table move與shrink spaceOracle
- oracle 10g__alter table shrink space compactOracle 10g
- 關於Oracle dba_free_space 檢視的研究Oracle
- 【Oracle】-【show_space和show_space_asm】-執行儲存過程報錯OracleASM儲存過程
- Oracle 10g Shrink Table - Shrink Space 收縮空間Oracle 10g
- Oracle IZ0-053 Q277(Table shrink space)Oracle
- alter table move 和 alter table shrink space的區別
- 頑固TABLEのtable-layout/white-space
- oracle10g_asm_v$asm_disk之total_mb_free_mb_required_mirror_free_mb相互關係OracleASMUI
- ALTER TABLE MOVE | SHRINK SPACE區別
- Availability and Optimization of Free Space in a Data Block(五)AIBloC
- Availability and Compression of Free Space in a Data BlockAIBloC
- ALTER TABLE MOVE和SHRINK SPACE區別
- create table進階學習(二)_dba_free_temp_space_v$tempseg_usage_v$sort_segment
- PostgreSQL FSM(Free Space Map) 原始碼解讀SQL原始碼
- alter table move 與shrink space的區別
- alter table move跟shrink space的區別
- alter table move跟shrink space的區別(轉)
- 壓縮table and index 對 space 的影響testIndex
- Oracle DBMS_SPACEOracle
- 資料庫 sqlite3_get_table,sqlite3_free_table資料庫SQLite
- 查詢tablespace實際使用量與剩餘空間(free space)以及db或table實際資料量問題
- SQL查詢table或index異常增長問題 - space_usage (show_space)SQLIndex
- Oracle-Segment space managementOracle
- oracle10g_alter table shrink space_compact_cascade回收空間測試(一)Oracle
- ASM 磁碟對應後臺Table 表格ASM
- 測試alter table storage及dbms_space_admin包
- actual size LOB segments and free deleted/unused space above/below HWM-386341.1delete
- MongoDB報錯Insufficient free space for journal files的解決方法MongoDB
- dba_free_space查詢速度慢問題解決
- [Oracle] Partition table exchange Heap tableOracle
- oracle asmOracleASM