staleness directory是ASM元信息的12號(hào)文件,包含了可以把staleness registry中的槽位映射給特定磁盤和客戶端的元信息。staleness registry是ASM元信息254號(hào)文件,當(dāng)磁盤offline時(shí),用于跟蹤AU的狀態(tài)。這兩個(gè)特性適用于COMPATIBLE.RDBMS設(shè)置為11.1或以上且NORMAL或HIGH冗余模式的磁盤組。只有在需要時(shí)staleness元信息才會(huì)被創(chuàng)建,本身的內(nèi)容大小會(huì)隨著offline磁盤的增多而增長(zhǎng)。
譯者注:這里的客戶端可以理解成數(shù)據(jù)庫(kù)實(shí)例
當(dāng)一個(gè)磁盤offline時(shí),每個(gè)RDBMS實(shí)例都會(huì)從staleness registry中得到一個(gè)映射到該磁盤的槽位。這個(gè)槽位中的每一個(gè)比特位映射這個(gè)offline磁盤上的一個(gè)AU。當(dāng)RDBMS實(shí)例對(duì)offline的磁盤發(fā)起寫IO操作時(shí),該實(shí)例會(huì)在staleness registry中修改對(duì)應(yīng)的比特位。
當(dāng)一個(gè)磁盤被online時(shí),ASM會(huì)從冗余的extent中拷貝staleness registry比特位中記錄的AU。因?yàn)橹挥衞ffline時(shí)被改變過的AU會(huì)被更新,所以磁盤online操作的效率會(huì)高于該盤被drop并添加一塊新盤的效率。
staleness元信息的結(jié)構(gòu)在需要時(shí)會(huì)被創(chuàng)建,這意味著staleness directory和staleness registry在磁盤正常online時(shí)是不存在的。
SQL> SELECT g.name "Disk group",
g.group_number "Group#",
d.disk_number "Disk#",
d.name "Disk",
d.mode_status "Disk status" FROM v$asm_disk d, v$asm_diskgroup g
WHERE g.group_number=d.group_number and g.group_number<>0 ORDER BY 1, 2, 3; Disk group Group# Disk# Disk Disk status ------------ ---------- ---------- ------------ ------------
DATA 1 0 ASMDISK1 ONLINE 1 ASMDISK2 ONLINE 2 ASMDISK3 ONLINE
RECO 2 0 ASMDISK4 ONLINE 1 ASMDISK5 ONLINE 2 ASMDISK6 ONLINE
SQL> SELECT x.number_kffxp "File#", x.disk_kffxp "Disk#", x.xnum_kffxp "Extent", x.au_kffxp "AU",
d.name "Disk name" FROM x$kffxp x, v$asm_disk_stat d
WHERE x.group_kffxp=d.group_number and x.disk_kffxp=d.disk_number and x.number_kffxp in (12, 254)
ORDER BY 1, 2; no rows selected
Staleness信息在磁盤offline并且在針對(duì)該offline盤有寫IO時(shí)才會(huì)被創(chuàng)建。
在下面的例子中,我會(huì)通過ALTER DISKGROUP OFFLINE DISK命令手動(dòng)把一個(gè)磁盤offline。但是需要指出,staleness元信息的創(chuàng)建跟磁盤以何種方式何種原因offline無關(guān)。
SQL> alter diskgroup RECO offline disk ASMDISK6; Diskgroup altered.
SQL> SELECT g.name "Disk group",
g.group_number "Group#",
d.disk_number "Disk#",
d.name "Disk",
d.mode_status "Disk status" FROM v$asm_disk d, v$asm_diskgroup g
WHERE g.group_number=d.group_number and g.group_number=2 ORDER BY 1, 2, 3; Disk group Group# Disk# Disk Disk status ------------ ---------- ---------- ------------ ------------
RECO 2 0 ASMDISK4 ONLINE 1 ASMDISK5 ONLINE 2 ASMDISK6 OFFLINE
數(shù)據(jù)庫(kù)針對(duì)該磁盤組進(jìn)行不斷的寫入,很快就可以觀察到該磁盤組中已經(jīng)創(chuàng)建了staleness directory和staleness registry。
SQL> SELECT x.number_kffxp "File#", x.disk_kffxp "Disk#", x.xnum_kffxp "Extent", x.au_kffxp "AU",
d.name "Disk name" FROM x$kffxp x, v$asm_disk_stat d
WHERE x.group_kffxp=d.group_number and x.disk_kffxp=d.disk_number and d.group_number=2 and x.number_kffxp in (12, 254)
ORDER BY 1, 2; File# Disk# Extent AU Disk name ---------- ---------- ---------- ---------- ------------------------------ 12 0 0 86 ASMDISK4 1 0 101 ASMDISK5 2 0 4294967294 ASMDISK6 254 0 0 85 ASMDISK4 1 0 100 ASMDISK5 2 0 4294967294 ASMDISK6
元信息中并沒有很多有價(jià)值的信息,連kfed都無法分辨出這種類型元信息block。
$ kfed read /dev/oracleasm/disks/ASMDISK4 aun=86 | more
kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 21 ; 0x002: *** Unknown Enum *** ... kffdnd.bnode.incarn: 1 ; 0x000: A=1 NUMM=0x0 kffdnd.bnode.frlist.number: 4294967295 ; 0x004: 0xffffffff kffdnd.bnode.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0 kffdnd.overfl.number: 4294967295 ; 0x00c: 0xffffffff kffdnd.overfl.incarn: 0 ; 0x010: A=0 NUMM=0x0 kffdnd.parent.number: 0 ; 0x014: 0x00000000 kffdnd.parent.incarn: 1 ; 0x018: A=1 NUMM=0x0 kffdnd.fstblk.number: 0 ; 0x01c: 0x00000000 kffdnd.fstblk.incarn: 1 ; 0x020: A=1 NUMM=0x0 kfdsde.entry.incarn: 1 ; 0x024: A=1 NUMM=0x0 kfdsde.entry.hash: 0 ; 0x028: 0x00000000 kfdsde.entry.refer.number: 4294967295 ; 0x02c: 0xffffffff kfdsde.entry.refer.incarn: 0 ; 0x030: A=0 NUMM=0x0 kfdsde.cid: +ASMR ; 0x034: length=5 kfdsde.indlen: 1 ; 0x074: 0x0001 kfdsde.flags: 0 ; 0x076: 0x0000 kfdsde.spare1: 0 ; 0x078: 0x00000000 kfdsde.spare2: 0 ; 0x07c: 0x00000000 kfdsde.indices[0]: 0 ; 0x080: 0x00000000 kfdsde.indices[1]: 0 ; 0x084: 0x00000000 kfdsde.indices[2]: 0 ; 0x088: 0x00000000 ... $ kfed read /dev/oracleasm/disks/ASMDISK4 aun=85 | more
kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 20 ; 0x002: *** Unknown Enum *** ... kfdsHdrB.clientId: 1297301881 ; 0x000: 0x4d534179 kfdsHdrB.incarn: 0 ; 0x004: 0x00000000 kfdsHdrB.dskNum: 2 ; 0x008: 0x0002 kfdsHdrB.ub2spare: 0 ; 0x00a: 0x0000 ub1[0]: 0 ; 0x00c: 0x00 ub1[1]: 0 ; 0x00d: 0x00 ub1[2]: 0 ; 0x00e: 0x00 ub1[3]: 0 ; 0x00f: 0x00 ub1[4]: 0 ; 0x010: 0x00 ub1[5]: 0 ; 0x011: 0x00 ub1[6]: 0 ; 0x012: 0x00 ub1[7]: 16 ; 0x013: 0x10 ub1[8]: 0 ; 0x014: 0x00 ...
除了一些比特位,沒有太多有價(jià)值信息。
staleness directory和staleness registry提供的元信息結(jié)構(gòu)用來為ASM 11中引入的fast mirror resync新特性提供支持。staleness directory是ASM元信息12號(hào)文件,包含了可以把staleness registry中的槽位映射給特定磁盤和客戶端的元信息。當(dāng)磁盤offline時(shí),staleness registry用于跟蹤AU的狀態(tài)。這個(gè)特性只在NORMAL或HIGH冗余模式的磁盤組中生效。
本站文章版權(quán)歸原作者及原出處所有 。內(nèi)容為作者個(gè)人觀點(diǎn), 并不代表本站贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé),本站只提供參考并不構(gòu)成任何投資及應(yīng)用建議。本站是一個(gè)個(gè)人學(xué)習(xí)交流的平臺(tái),網(wǎng)站上部分文章為轉(zhuǎn)載,并不用于任何商業(yè)目的,我們已經(jīng)盡可能的對(duì)作者和來源進(jìn)行了通告,但是能力有限或疏忽,造成漏登,請(qǐng)及時(shí)聯(lián)系我們,我們將根據(jù)著作權(quán)人的要求,立即更正或者刪除有關(guān)內(nèi)容。本站擁有對(duì)此聲明的最終解釋權(quán)。