磁盘--DG--AU--block
ASM file--extents--AU
ASM实例参数
show parameter asm_
asm_diskgroup ##保证磁盘组随asm启动自动挂载! asm_diskstring ##指定asm搜索磁盘的路径! asm_power_limit ##指定rebalance时的并行度!
查看磁盘组及磁盘状态
磁盘组: set linesize 200 col name for a10 select group_number,name,state,type,ALLOCATION_UNIT_SIZE/1024/1024 au_size_MB,total_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup order by 1; GROUP_NUMBER NAME STATE TYPE TOTAL_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB ------------ ---------- ----------- ------ ---------- ----------------------- -------------- 1 DATA MOUNTED EXTERN 10240 0 8150 2 OCR MOUNTED EXTERN 1024 0 628 磁盘: set linesize 200 col GROUP# for 999999 col disk#r for 99999 col name for a10 col failgroup for a10 col path for a25 select GROUP_NUMBER group#,disk_number disk#,MOUNT_STATUS,header_status,mode_status,state,name,path,failgroup,failgroup_type,total_mb,free_mb,VOTING_FILE from v$asm_disk order by 1,2; GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU MODE_ST STATE NAME PATH FAILGROUP FAILGRO TOTAL_MB FREE_MB V ------------ ----------- ------- ------------ ------- -------- ---------- --------------- --------------- ------- ---------- ---------- - 1 0 CACHED MEMBER ONLINE NORMAL DATA_0000 /dev/asm-diskc DATA_0000 REGULAR 10240 8150 N 2 0 CACHED MEMBER ONLINE NORMAL OCR_0000 /dev/asm-diskb OCR_0000 REGULAR 1024 628 Y 磁盘组及磁盘: set linesize 200 col path for a20 col group# for 99 col disk# for 99 select g.group_number group#,g.name,g.state,g.type,g.total_mb,g.free_mb,g.usable_file_mb,d.disk_number disk#,d.name,d.path,d.mount_status,d.header_status,d.total_mb,d.free_mb from v$asm_diskgroup g,v$asm_disk d where g.group_number=d.group_number order by 1,8; GROUP# NAME STATE TYPE TOTAL_MB FREE_MB USABLE_FILE_MB DISK# NAME PATH MOUNT_S HEADER_STATU TOTAL_MB FREE_MB ------ --------------- ----------- ------ ---------- ---------- -------------- ----- --------------- -------------------- ------- ------------ ---------- ---------- 1 DATA MOUNTED EXTERN 10240 8031 8031 0 DATA_0000 /dev/asm-diskc CACHED MEMBER 10240 8031 2 OCR MOUNTED EXTERN 1024 628 628 0 OCR_0000 /dev/asm-diskb CACHED MEMBER 1024 628
磁盘组加盘删盘
修改磁盘属性
lsattr -El hdiskpower3 -a reserve_policy /usr/sbin/chdev -l hdiskpower3 -a reserve_policy=no_reserve
修改权限
ls -l /dev|grep hdisk
chown grid:dba /dev/rhdiskpower3
如有必要,清除磁盘头信息:(磁盘块大小4k,块数量256个,共1M)
dd if=/dev/zero of=/dev/xxxx bs=4096 count=256
加盘
sqlplus / as sysasm alter diskgroup DATA add disk '/dev/rhdiskpower3';
删盘
alter diskgroup DATA4 drop disk VOL5; show parameter asm_power alter system set asm_power_limit=8;
rebalance
加、删盘操作后都需要rebalance操作!!!rebalbanc完成后才能进行其他后续操作!!!
提高平衡速率
ALTER DISKGROUP DATA REBALANCE POWER 8;
停止平衡操作
ALTER DISKGROUP DATA REBALANCE POWER 0;
查看平衡需要的时间
select * from v$asm_operation; select TOTAL_MB,FREE_MB,path from v$asm_disk_stat where GROUP_NUMBER=2 order by 3;
恢复到平衡速率为1
ALTER DISKGROUP DATA REBALANCE POWER 1;
创建磁盘组
CREATE DISKGROUP dgroup_01 EXTERNAL REDUNDANCY DISK '/dev/asm-diskd';
删除磁盘组
alter diskgroup data dismount; drop diskgroup datadg including contents;
磁盘组挂载卸载
挂载: ALTER DISKGROUP dg1 MOUNT; 卸载: ALTER DISKGROUP dg1 DISMOUNT;
asm元数据
参考:
ASM的元数据 - 墨天轮.mhtml
经典知识库:ASM元数据简介及案例分享+-+杨有田_2021.8.27墨天轮直播.pdf
Oracle ASM磁盘组被误删除!他跑,她追,他插翅难飞!.mhtml
【应知应会】使用kfed运维兵器修复ASM磁盘和磁盘组.mhtml
ASM实验手册22-19_Oracle数据库教程_ASM Metadata元数据管理与ASM健康检查.pdf
ASM元数据--概览
ASM元数据包含的内容比较多,日常运维过程接触较多的有/ACD/Alias Directory等。为了便于理解,从两个角度来看:
空间管理角度,就是管理所有AU空间;Disk Header/FST/AT/PST等。
文件管理角度,就是管理业务数据文件和asm元数据文件等文件类型。F1B1/ACD/Alias Directory等。
空间管理主要通过FST/AT/PST,文件管理主要通过F1B1(包括元数据)
物理元数据用于描述磁盘组的组成、空间分配等内容,而虚拟元数据则用于记录ASM文件在磁盘组上的分布,就如同inode信息一样。虚拟元数据也存储在ASM文件中,和其他ASM文件的分布管理完全相同。
默认情况下,文件号256以下都是元数据,用户文件从256号开始!
asm所涉及的元数据信息,对应关系如下:
file# 1 ---ASM file 1,file directory ##文件目录f1b1 file# 2 ---ASM file 2,disk directory file# 3 ---ASM file 3,active Change Directory(ACD) ##相当于redo file# 4 ---ASM file 4,continuing Operations Directory (COD) ##相当于undo file# 5 ---ASM file 5,template directory file# 6 ---ASM file 6,alias directory ##别名目录 file# 7 ---volume directory file# 8 ---disk Used Space Directory (USD) file# 9 ---attributes directory
X$KFFXP即Kernel File Extent Maps,是ASM自动存储管理特性的重要内部视图,反应了File Extent Map映射关系, 该视图的一条记录代表一个Extent。
su - grid sqlplus / as sysasm select distinct group_kffxp group#,NUMBER_KFFXP file# from x$kffxp where number_kffxp<256 order by 1,2; GROUP# FILE# ---------- ---------- 1 1 1 2 1 3 1 4 1 5 1 6 1 8 1 9 2 1 2 2 2 3 GROUP# FILE# ---------- ---------- 2 4 2 5 2 6 2 8 2 9 2 253 2 255
ASM元数据--磁盘头(disk header)
磁盘头非常重要,数据读取的起点,比如FST/AT/PST/F1B1(空间和文件),也就是磁盘空间分配和文件管理的指针。
配置kfed
cd $ORACLE_HOME find . -name ins_rdbms.mk ./rdbms/lib/ins_rdbms.mk make -f ins_rdbms.mk ikfed cd $ORACLE_HOME/bin ls -l kfed* kfed -help [root@rac1 ~]# kfed -help as/mlib ASM Library [asmlib='lib'] aun/um AU number to examine or update [AUNUM=number] aus/z Allocation Unit size in bytes [AUSZ=number] ##AU大小,默认为1MB blkn/um Block number to examine or update [BLKNUM=number] blks/z Metadata block size in bytes [BLKSZ=number] ##块大小,默认为4KB ch/ksum Update checksum before each write [CHKSUM=YES/NO] ##写入时更新校验和 cn/t Count of AUs to process [CNT=number] de/v ASM device to examine or update [DEV=string] dm/pall Don't suppress repeated lines when dumping corrupt blocks [DMPALL=YES/NO] o/p KFED operation type [OP=READ/WRITE/MERGE/REPAIR/NEW/FORM/FIND/STRUCT] p/rovnm Name for provisioning purposes [PROVNM=string] s/eek AU number to seek to [SEEK=number] te/xt File name for translated block text [TEXT=string] ty/pe ASM metadata block type number [TYPE=number]
asm磁盘头元数据及其备份
asm的每个磁盘上存放有asm元数据,元数据一般大小为4k。
asm disk header元数据一般在第0个au的第0个块上。
可先确认下ausize及blksize: kfed read /dev/sdb aun=0 blkn=0|grep -E 'ausize|blksize' kfed read /dev/sdb aun=0 blkn=0 | more [root@rac1 ~]# kfed read /dev/sdb aun=0 blkn=0 | more kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD ##块类型:磁盘头 kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 0 ; 0x004: blk=0 kfbh.block.obj: 2147483648 ; 0x008: disk=0 kfbh.check: 2360082377 ; 0x00c: 0x8cabffc9 kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kfdhdb.driver.provstr: ORCLDISK ; 0x000: length=8 kfdhdb.driver.reserved[0]: 0 ; 0x008: 0x00000000 kfdhdb.driver.reserved[1]: 0 ; 0x00c: 0x00000000 kfdhdb.driver.reserved[2]: 0 ; 0x010: 0x00000000 kfdhdb.driver.reserved[3]: 0 ; 0x014: 0x00000000 kfdhdb.driver.reserved[4]: 0 ; 0x018: 0x00000000 kfdhdb.driver.reserved[5]: 0 ; 0x01c: 0x00000000 kfdhdb.compat: 186646528 ; 0x020: 0x0b200000 kfdhdb.dsknum: 0 ; 0x024: 0x0000 ##磁盘组内磁盘编号 kfdhdb.grptyp: 1 ; 0x026: KFDGTP_EXTERNAL ##磁盘组冗余类型 kfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBER ##磁盘头状态(是否是磁盘组成员) kfdhdb.dskname: OCR_0000 ; 0x028: length=8 ##磁盘名 kfdhdb.grpname: OCR ; 0x048: length=3 ##磁盘组名 kfdhdb.fgname: OCR_0000 ; 0x068: length=8 ##failgroup名 kfdhdb.capname: ; 0x088: length=0 kfdhdb.crestmp.hi: 33162926 ; 0x0a8: HOUR=0xe DAYS=0x15 MNTH=0x1 YEAR=0x7e8 kfdhdb.crestmp.lo: 82260992 ; 0x0ac: USEC=0x0 MSEC=0x1cd SECS=0xe MINS=0x1 kfdhdb.mntstmp.hi: 33163220 ; 0x0b0: HOUR=0x14 DAYS=0x1e MNTH=0x1 YEAR=0x7e8 kfdhdb.mntstmp.lo: 422974464 ; 0x0b4: USEC=0x0 MSEC=0x185 SECS=0x13 MINS=0x6 kfdhdb.secsize: 512 ; 0x0b8: 0x0200 ##扇区大小,默认512B kfdhdb.blksize: 4096 ; 0x0ba: 0x1000 ##块大小,默认4KB kfdhdb.ausize: 1048576 ; 0x0bc: 0x00100000 ##au大小,默认1MB kfdhdb.mfact: 113792 ; 0x0c0: 0x0001bc80 kfdhdb.dsksize: 1024 ; 0x0c4: 0x00000400 ##磁盘大小:MB kfdhdb.pmcnt: 2 ; 0x0c8: 0x00000002 kfdhdb.fstlocn: 1 ; 0x0cc: 0x00000001 ##fst位置(块号):(0号au)1号块 kfdhdb.altlocn: 2 ; 0x0d0: 0x00000002 ##at位置(块号):(0号au)2号块 kfdhdb.f1b1locn: 2 ; 0x0d4: 0x00000002 ##f1b1(文件目录)位置(au号):2号AU kfdhdb.redomirrors[0]: 0 ; 0x0d8: 0x0000 kfdhdb.redomirrors[1]: 0 ; 0x0da: 0x0000 kfdhdb.redomirrors[2]: 0 ; 0x0dc: 0x0000 kfdhdb.redomirrors[3]: 0 ; 0x0de: 0x0000 kfdhdb.dbcompat: 168820736 ; 0x0e0: 0x0a100000 kfdhdb.grpstmp.hi: 33162926 ; 0x0e4: HOUR=0xe DAYS=0x15 MNTH=0x1 YEAR=0x7e8 kfdhdb.grpstmp.lo: 82032640 ; 0x0e8: USEC=0x0 MSEC=0xee SECS=0xe MINS=0x1 kfdhdb.vfstart: 352 ; 0x0ec: 0x00000160 kfdhdb.vfend: 384 ; 0x0f0: 0x00000180 kfdhdb.spfile: 58 ; 0x0f4: 0x0000003a kfdhdb.spfflg: 1 ; 0x0f8: 0x00000001 kfdhdb.ub4spare[0]: 0 ; 0x0fc: 0x00000000 kfdhdb.ub4spare[1]: 0 ; 0x100: 0x00000000 kfdhdb.ub4spare[2]: 0 ; 0x104: 0x00000000 ...... kfdhdb.ub4spare[51]: 0 ; 0x1c8: 0x00000000 kfdhdb.ub4spare[52]: 0 ; 0x1cc: 0x00000000 kfdhdb.ub4spare[53]: 0 ; 0x1d0: 0x00000000 kfdhdb.acdb.aba.seq: 0 ; 0x1d4: 0x00000000 kfdhdb.acdb.aba.blk: 0 ; 0x1d8: 0x00000000 kfdhdb.acdb.ents: 0 ; 0x1dc: 0x0000 kfdhdb.acdb.ub2spare: 0 ; 0x1de: 0x0000
oracle会自动备份disk header 到第二个AU的倒数第二个块里面,比如AU为1M,是510块(block size 为4k),可以通过kfed repair直接修复disk header。如果12C,11号AU,整体copy AU 0
默认情况,ausize为1M,blksize 为4k,则asm元数据的备份一般在disk header第2个au(AU1)的倒数第二个块(第254块)上。
kfed read /dev/sdb aun=1 blkn=254 | more 两个块内容对比: kfed read /dev/sdb aun=0 blkn=0>a.txt kfed read /dev/sdb aun=1 blkn=254>b.txt diff a.txt b.txt 5c5 < kfbh.block.blk: 0 ; 0x004: blk=0 --- > kfbh.block.blk: 254 ; 0x004: blk=254 7c7 < kfbh.check: 582422934 ; 0x00c: 0x22b71196 --- > kfbh.check: 582422888 ; 0x00c: 0x22b71168
dsknum ##磁盘号 grptype ##磁盘组冗余类型 hdrsts ##磁盘头状态(正常在磁盘组的状态为3,即member状态。若不是此状态则不能mount!!!) dskname ##磁盘名 grpname ##磁盘组名 fgname ##failgroup名
ASM磁盘头HEADER_STATUS的状态,常见有以下4种。
CANDIDATE\PROVISIONED:磁盘不是磁盘组的一部分,可以通过ALTER DISKGROUP语句添加到磁盘组中 MEMBER:磁盘是现有磁盘组的成员。请勿尝试将磁盘添加到其他磁盘组 FORMER:磁盘曾经是磁盘组的一部分,但已从该组中彻底删除。可以使用ALTER DISKGROUP语句将其添加到新的磁盘组中
备份ASM磁盘头元数据方法
⑴ dd备份法
dd if=/dev/sdb of=/tmp/asm_sdb_dd.bak bs=1M count=1
⑵ kfed备份法(推荐使用此方法)
kfed read /dev/sdb aun=0 blkn=0 text=asm_sdb_au0_blk0.txt kfed read /dev/sdb aun=1 blkn=254 text=asm_sdb_au1_blk254.txt
恢复ASM磁盘头元数据方法
⑴ dd恢复法
dd if=/tmp/asm_sdb_dd.bak of=/dev/sdb bs=4096 count=1 ##只写回4096字节即可!!
⑵ kfed恢复法(推荐使用此方法)
使用kfed repair(优先使用)
kfed repair /dev/sdb ##利用元数据的备份块恢复
使用kfed备份恢复
kfed write /dev/sdb aun=0 blkn=0 text=asm_sdb.txt
使用kfed手动恢复
kfed read /dev/sdb aun=0 blkn=0 text=asm_sdb_au0_blk0.txt kfed read /dev/sdb aun=1 blkn=254 text=asm_sdb_au1_blk254.txt vi asm_sdb_au0_blk0.txt ##对比上面正常内容,修改导出文本内容,重点关注kfdhdb.hdrsts vi asm_sdb_au1_blk254.txt kfed merge /dev/sdb aun=0 blkn=0 text=asm_sdb_au0_blk0.txt kfed merge /dev/sdb aun=1 blkn=254 text=asm_sdb_au1_blk254.txt
ASM元数据--FST
Free Space Table (FST)用于存放未被使用的AU信息。
kfed read /dev/sdc 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: 2147483648 ; 0x008: disk=0 kfbh.check: 2181364691 ; 0x00c: 0x8204fbd3 kfbh.fcn.base: 3629 ; 0x010: 0x00000e2d 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: 23 ; 0x006: 0x0017 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: 0 ; 0x01b: FREE=0x0 FRAG=0x0 kfdfse[4].fse: 0 ; 0x01c: FREE=0x0 FRAG=0x0 kfdfse[5].fse: 119 ; 0x01d: FREE=0x7 FRAG=0x7 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
ASM元数据--AT
Allocation Table,每个ASM磁盘都有一个分配表(AT),用于跟踪磁盘中空间的分配情况,其中包含ATE(Allocation Table Entry)数据结构用于跟踪磁盘中每个分配的AU。
kfed read /dev/sdc aun=0 blkn=2|more kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL kfbh.datfmt: 2 ; 0x003: 0x02 kfbh.block.blk: 2 ; 0x004: blk=2 kfbh.block.obj: 2147483648 ; 0x008: disk=0 kfbh.check: 2183627251 ; 0x00c: 0x822781f3 kfbh.fcn.base: 846 ; 0x010: 0x0000034e kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kfdatb.aunum: 0 ; 0x000: 0x00000000 kfdatb.shrink: 448 ; 0x004: 0x01c0 kfdatb.ub2pad: 0 ; 0x006: 0x0000 kfdatb.auinfo[0].link.next: 8 ; 0x008: 0x0008 kfdatb.auinfo[0].link.prev: 8 ; 0x00a: 0x0008 kfdatb.auinfo[1].link.next: 12 ; 0x00c: 0x000c kfdatb.auinfo[1].link.prev: 12 ; 0x00e: 0x000c kfdatb.auinfo[2].link.next: 16 ; 0x010: 0x0010 kfdatb.auinfo[2].link.prev: 16 ; 0x012: 0x0010 kfdatb.auinfo[3].link.next: 20 ; 0x014: 0x0014 kfdatb.auinfo[3].link.prev: 20 ; 0x016: 0x0014 kfdatb.auinfo[4].link.next: 24 ; 0x018: 0x0018 kfdatb.auinfo[4].link.prev: 24 ; 0x01a: 0x0018 kfdatb.auinfo[5].link.next: 28 ; 0x01c: 0x001c kfdatb.auinfo[5].link.prev: 28 ; 0x01e: 0x001c kfdatb.auinfo[6].link.next: 32 ; 0x020: 0x0020 kfdatb.auinfo[6].link.prev: 32 ; 0x022: 0x0020 kfdatb.spare: 0 ; 0x024: 0x00000000 kfdate[0].discriminator: 1 ; 0x028: 0x00000001 kfdate[0].allo.lo: 0 ; 0x028: XNUM=0x0 kfdate[0].allo.hi: 8388608 ; 0x02c: V=1 I=0 H=0 FNUM=0x0 kfdate[1].discriminator: 1 ; 0x030: 0x00000001 kfdate[1].allo.lo: 0 ; 0x030: XNUM=0x0 kfdate[1].allo.hi: 8388608 ; 0x034: V=1 I=0 H=0 FNUM=0x0 kfdate[2].discriminator: 1 ; 0x038: 0x00000001 kfdate[2].allo.lo: 0 ; 0x038: XNUM=0x0 kfdate[2].allo.hi: 8388609 ; 0x03c: V=1 I=0 H=0 FNUM=0x1 kfdate[3].discriminator: 1 ; 0x040: 0x00000001 kfdate[3].allo.lo: 0 ; 0x040: XNUM=0x0 kfdate[3].allo.hi: 8388610 ; 0x044: V=1 I=0 H=0 FNUM=0x2 kfdate[4].discriminator: 1 ; 0x048: 0x00000001 kfdate[4].allo.lo: 0 ; 0x048: XNUM=0x0
ASM元数据--PST
PST用于跟踪磁盘的成员和伙伴关系,占用每个磁盘的第二个AU。0/1号块PST_META,3号块为PST_DTA。
外部冗余磁盘组,只有一个磁盘上有PST信息;
normal 有3份PST,
high有5份PST(kfdpHdrPairBv1.first.super.copyCnt)
ASM的磁盘冗余机制是通过将extent的镜像副本复制到同一磁盘组不同failgroup的磁盘上来实现的。这个磁盘被称为partner磁盘。
在external冗余方式的磁盘组内既没有failgroup,磁盘之间也没有partner关系。
如果normal冗余的磁盘组有2个磁盘,他们之间就是partner关系。所有在磁盘0上的extent都在磁盘1上有镜像副本。
如果normal冗余的磁盘组有三个磁盘,同时没有手工指定failgroup的情况下,每个磁盘将拥有2个partner,磁盘0与磁盘1,2有partner关系。磁盘2与磁盘0,1有partner关系。
kfed read /dev/sdc aun=1 blkn=0|more kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 17 ; 0x002: KFBTYP_PST_META ##1号au的0号和1号块都是PST_META kfbh.datfmt: 2 ; 0x003: 0x02 kfbh.block.blk: 256 ; 0x004: blk=256 kfbh.block.obj: 2147483648 ; 0x008: disk=0 kfbh.check: 703654061 ; 0x00c: 0x29f0e8ad kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 [root@rac1 ~]# kfed read /dev/sdc aun=1 blkn=0>fst_meta_01 [root@rac1 ~]# kfed read /dev/sdc aun=1 blkn=1>fst_meta_02 [root@rac1 ~]# diff fst_meta_01 fst_meta_02 5c5 < kfbh.block.blk: 256 ; 0x004: blk=256 --- > kfbh.block.blk: 257 ; 0x004: blk=257 7c7 < kfbh.check: 703654061 ; 0x00c: 0x29f0e8ad --- > kfbh.check: 703653036 ; 0x00c: 0x29f0e4ac 13,14c13,14 < kfdpHdrPairBv1.first.super.time.lo:2688183296 ; 0x004: USEC=0x0 MSEC=0x29b SECS=0x3 MINS=0x28 < kfdpHdrPairBv1.first.super.last: 2 ; 0x008: 0x00000002 --- > kfdpHdrPairBv1.first.super.time.lo:2688180224 ; 0x004: USEC=0x0 MSEC=0x298 SECS=0x3 MINS=0x28 > kfdpHdrPairBv1.first.super.last: 1 ; 0x008: 0x00000001 104c104 < ub1[0]: 2 ; 0x108: 0x02 --- > ub1[0]: 1 ; 0x108: 0x01
其最后一个数据块被保留用于磁盘组心跳(Heartbeat),防止磁盘组被不同集群同时加载,同RAC一样,ASM依赖CSS(Cluster Synchronization Services)机制防止集群中的脑裂(split brain),而PST心跳是防止集群间Split brain的一个补充机制,就如同RDBMS通过持续写控制文件心跳信息来防止集群外实例加载数据库一样。
kfed read /dev/sdc aun=1 blkn=255|more kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 19 ; 0x002: KFBTYP_HBEAT kfbh.datfmt: 2 ; 0x003: 0x02 kfbh.block.blk: 511 ; 0x004: blk=511 kfbh.block.obj: 2147483648 ; 0x008: disk=0 kfbh.check: 3406588390 ; 0x00c: 0xcb0c69e6 kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kfdpHbeatB.instance: 1 ; 0x000: 0x00000001 kfdpHbeatB.ts.hi: 33165716 ; 0x004: HOUR=0x14 DAYS=0xc MNTH=0x4 YEAR=0x7e8 kfdpHbeatB.ts.lo: 1787020288 ; 0x008: USEC=0x0 MSEC=0xf1 SECS=0x28 MINS=0x1a kfdpHbeatB.rnd[0]: 2946155059 ; 0x00c: 0xaf9ac233 kfdpHbeatB.rnd[1]: 2223784780 ; 0x010: 0x848c434c kfdpHbeatB.rnd[2]: 1007184493 ; 0x014: 0x3c086a6d kfdpHbeatB.rnd[3]: 897111199 ; 0x018: 0x3578d49f
ASM元数据--文件管理
最常见的虚拟元数据信息包含:File Directory(F1B1)、Disk Directory、Active Change Directory (ACD)、Continuing Operations Directory (COD)、Template Directory、Alias Directory、Attribute Directory、Staleness Directory、Staleness Registry等。
虚拟元数据中最首要的信息是File Directory,该目录记录了所有ASM File的元数据,每个ASM File在其中有一条记录,包含Incarnation number、File size、File block size、File type、Redundancy 、Striping 、File creation time、File modification time、File layout等信息。
File Directory中最重要的信息是文件存储形式(File Layout),该结构描述ASM文件的空间分布,类似Inode的结构,是通过几级指针来完成的,File Directory包含一个文件前60个Extent指针,称为一级区(direct extents 包含指向具体磁盘AU的指针),接下来是二级区(indrect extent),每个二级区占用一个AU,可以包含300个二级区指针,每个二级区指针指向一个其他的“一级区”,这个“一级区”包含指向具体磁盘AU的指针。
磁盘头f1b1可以理解为文件目录指针,记录该磁盘组里面每个ASM文件的每个extent所在的磁盘号和AU号。
每个kfffde数组管理256个文件。
kfffde[0]的扩展管理0-255号文件(AU里面每个块表示一个文件号,块号就是文件号),ASM保留给metadata使用。
kfffde[1]的扩展管理256 - 511号文件,依次类推。
确认f1b1在哪个au
kfed read /dev/sdc aun=0 blkn=0|grep f1b1 kfdhdb.f1b1locn: 2 ; 0x0d4: 0x00000002 ##f1b1在2号au的第1号块(1号文件)
读取f1b1 kfffde信息
kfed read /dev/sdc aun=2 blkn=1|grep kfffde|head -10 kfffde[0].xptr.au: 2 ; 0x4a0: 0x00000002 ##即2号au管理0-255号文件的kfffde指针 kfffde[0].xptr.disk: 0 ; 0x4a4: 0x0000 kfffde[0].xptr.flags: 0 ; 0x4a6: L=0 E=0 D=0 S=0 kfffde[0].xptr.chk: 40 ; 0x4a7: 0x28 kfffde[1].xptr.au: 101 ; 0x4a8: 0x00000065 kfffde[1].xptr.disk: 0 ; 0x4ac: 0x0000 kfffde[1].xptr.flags: 0 ; 0x4ae: L=0 E=0 D=0 S=0 kfffde[1].xptr.chk: 79 ; 0x4af: 0x4f kfffde[2].xptr.au: 4294967295 ; 0x4b0: 0xffffffff kfffde[2].xptr.disk: 65535 ; 0x4b4: 0xffff
确定ACD在哪个au
确认f1b1在哪个au: kfdhdb.f1b1locn: 2 ; 0x0d4: 0x00000002 读取f1b1 kfffde信息: kfed read /dev/sdc aun=2 blkn=1|grep kfffde|head -10 kfffde[0].xptr.au: 2 ; 0x4a0: 0x00000002 ##ACD是3号文件,则kfffde指针在2号au3号块 kfffde[0].xptr.disk: 0 ; 0x4a4: 0x0000 kfffde[0].xptr.flags: 0 ; 0x4a6: L=0 E=0 D=0 S=0 kfffde[0].xptr.chk: 40 ; 0x4a7: 0x28 kfffde[1].xptr.au: 101 ; 0x4a8: 0x00000065 kfffde[1].xptr.disk: 0 ; 0x4ac: 0x0000 kfffde[1].xptr.flags: 0 ; 0x4ae: L=0 E=0 D=0 S=0 kfffde[1].xptr.chk: 79 ; 0x4af: 0x4f kfffde[2].xptr.au: 4294967295 ; 0x4b0: 0xffffffff kfffde[2].xptr.disk: 65535 ; 0x4b4: 0xffff 确定ACD的kfffde位置:(ACD是3号文件,则它的kfffde指针在2号au的3号块) kfed read /dev/sdc aun=2 blkn=3|grep kfffde|head -10 kfffde[0].xptr.au: 4 ; 0x4a0: 0x00000004 ##看出ACD在2号au的4号块 kfffde[0].xptr.disk: 0 ; 0x4a4: 0x0000 kfffde[0].xptr.flags: 0 ; 0x4a6: L=0 E=0 D=0 S=0 kfffde[0].xptr.chk: 46 ; 0x4a7: 0x2e kfffde[1].xptr.au: 5 ; 0x4a8: 0x00000005 kfffde[1].xptr.disk: 0 ; 0x4ac: 0x0000 kfffde[1].xptr.flags: 0 ; 0x4ae: L=0 E=0 D=0 S=0 kfffde[1].xptr.chk: 47 ; 0x4af: 0x2f kfffde[2].xptr.au: 6 ; 0x4b0: 0x00000006 kfffde[2].xptr.disk: 0 ; 0x4b4: 0x0000 确认ACD信息: kfed read /dev/sdc aun=4 blkn=0|more kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 7 ; 0x002: KFBTYP_ACDC ##确认是ACD信息 kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 0 ; 0x004: blk=0 kfbh.block.obj: 3 ; 0x008: file=3 kfbh.check: 1111745689 ; 0x00c: 0x4243e499 kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kfracdc.eyec[0]: 65 ; 0x000: 0x41 kfracdc.eyec[1]: 67 ; 0x001: 0x43 kfracdc.eyec[2]: 68 ; 0x002: 0x44 kfracdc.eyec[3]: 67 ; 0x003: 0x43 kfracdc.thread: 1 ; 0x004: 0x00000001 kfracdc.lastAba.seq: 4294967295 ; 0x008: 0xffffffff kfracdc.lastAba.blk: 4294967295 ; 0x00c: 0xffffffff kfracdc.blk0: 1 ; 0x010: 0x00000001 kfracdc.blks: 10751 ; 0x014: 0x000029ff kfracdc.ckpt.seq: 9 ; 0x018: 0x00000009 ##ckpt.seq kfracdc.ckpt.blk: 721 ; 0x01c: 0x000002d1 kfracdc.fcn.base: 4095 ; 0x020: 0x00000fff kfracdc.fcn.wrap: 0 ; 0x024: 0x00000000 kfracdc.bufBlks: 256 ; 0x028: 0x00000100 kfracdc.strt112.seq: 2 ; 0x02c: 0x00000002 kfracdc.strt112.blk: 0 ; 0x030: 0x00000000
查看256号文件的au分布
2号au管理0-255号文件,101号au管理256-511号文件。因此,256号文件的au分布信息在101au的0号块中。
kfed read /dev/sdc aun=101 blkn=0|grep -E 'blk=256|xptr.au'|more kfbh.block.blk: 256 ; 0x004: blk=256 kfffde[0].xptr.au: 102 ; 0x4a0: 0x00000066 kfffde[1].xptr.au: 103 ; 0x4a8: 0x00000067 kfffde[2].xptr.au: 104 ; 0x4b0: 0x00000068 kfffde[3].xptr.au: 105 ; 0x4b8: 0x00000069 kfffde[4].xptr.au: 106 ; 0x4c0: 0x0000006a kfffde[5].xptr.au: 107 ; 0x4c8: 0x0000006b kfffde[6].xptr.au: 108 ; 0x4d0: 0x0000006c kfffde[7].xptr.au: 109 ; 0x4d8: 0x0000006d kfffde[8].xptr.au: 110 ; 0x4e0: 0x0000006e kfffde[9].xptr.au: 111 ; 0x4e8: 0x0000006f kfffde[10].xptr.au: 112 ; 0x4f0: 0x00000070 kfffde[11].xptr.au: 113 ; 0x4f8: 0x00000071 kfffde[12].xptr.au: 114 ; 0x500: 0x00000072 kfffde[13].xptr.au: 115 ; 0x508: 0x00000073 kfffde[14].xptr.au: 116 ; 0x510: 0x00000074 kfffde[15].xptr.au: 117 ; 0x518: 0x00000075 kfffde[16].xptr.au: 118 ; 0x520: 0x00000076 kfffde[17].xptr.au: 119 ; 0x528: 0x00000077 kfffde[18].xptr.au: 120 ; 0x530: 0x00000078 kfffde[19].xptr.au: 121 ; 0x538: 0x00000079 kfffde[20].xptr.au: 122 ; 0x540: 0x0000007a kfffde[21].xptr.au: 123 ; 0x548: 0x0000007b kfffde[22].xptr.au: 124 ; 0x550: 0x0000007c kfffde[23].xptr.au: 125 ; 0x558: 0x0000007d kfffde[24].xptr.au: 126 ; 0x560: 0x0000007e kfffde[25].xptr.au: 127 ; 0x568: 0x0000007f kfffde[26].xptr.au: 128 ; 0x570: 0x00000080 kfffde[27].xptr.au: 129 ; 0x578: 0x00000081 kfffde[28].xptr.au: 130 ; 0x580: 0x00000082 kfffde[29].xptr.au: 131 ; 0x588: 0x00000083 kfffde[30].xptr.au: 132 ; 0x590: 0x00000084 kfffde[31].xptr.au: 133 ; 0x598: 0x00000085 kfffde[32].xptr.au: 134 ; 0x5a0: 0x00000086 kfffde[33].xptr.au: 135 ; 0x5a8: 0x00000087 kfffde[34].xptr.au: 136 ; 0x5b0: 0x00000088 kfffde[35].xptr.au: 137 ; 0x5b8: 0x00000089 kfffde[36].xptr.au: 138 ; 0x5c0: 0x0000008a kfffde[37].xptr.au: 139 ; 0x5c8: 0x0000008b kfffde[38].xptr.au: 140 ; 0x5d0: 0x0000008c kfffde[39].xptr.au: 141 ; 0x5d8: 0x0000008d kfffde[40].xptr.au: 142 ; 0x5e0: 0x0000008e kfffde[41].xptr.au: 143 ; 0x5e8: 0x0000008f kfffde[42].xptr.au: 144 ; 0x5f0: 0x00000090 kfffde[43].xptr.au: 145 ; 0x5f8: 0x00000091 kfffde[44].xptr.au: 146 ; 0x600: 0x00000092 kfffde[45].xptr.au: 147 ; 0x608: 0x00000093 kfffde[46].xptr.au: 148 ; 0x610: 0x00000094 kfffde[47].xptr.au: 149 ; 0x618: 0x00000095 kfffde[48].xptr.au: 150 ; 0x620: 0x00000096 kfffde[49].xptr.au: 151 ; 0x628: 0x00000097 kfffde[50].xptr.au: 152 ; 0x630: 0x00000098 kfffde[51].xptr.au: 153 ; 0x638: 0x00000099 kfffde[52].xptr.au: 154 ; 0x640: 0x0000009a kfffde[53].xptr.au: 155 ; 0x648: 0x0000009b kfffde[54].xptr.au: 156 ; 0x650: 0x0000009c kfffde[55].xptr.au: 157 ; 0x658: 0x0000009d kfffde[56].xptr.au: 158 ; 0x660: 0x0000009e kfffde[57].xptr.au: 159 ; 0x668: 0x0000009f kfffde[58].xptr.au: 160 ; 0x670: 0x000000a0 kfffde[59].xptr.au: 161 ; 0x678: 0x000000a1 kfffde[60].xptr.au: 162 ; 0x680: 0x000000a2 kfffde[61].xptr.au: 4294967295 ; 0x688: 0xffffffff
查看ASM上共有多少个文件
select count(*),min(file_number),max(file_number) from v$asm_file; COUNT(*) MIN(FILE_NUMBER) MAX(FILE_NUMBER) ---------- ---------------- ---------------- 45 253 298 select distinct number_kffxp from x$kffxp; NUMBER_KFFXP ------------ 1 2 3 4 5 6 8 9 253 255 256 NUMBER_KFFXP ------------ 257 258 259 260 261 262 263 264 265 266 267 NUMBER_KFFXP ------------ 268 269 270 271 272 273 274 275 276 277 278 NUMBER_KFFXP ------------ 279 280 281 282 283 284 285 286 287 288 289 NUMBER_KFFXP ------------ 290 291 292 293 294 295 296 297 298 53 rows selected.
查看每个文件占用多少空间
select GROUP_NUMBER,FILE_NUMBER,BLOCK_SIZE,BLOCKS,SPACE/1024/1024 SIZE_MB,TYPE,REDUNDANCY,STRIPED from v$asm_file order by 1,2; GROUP_NUMBER FILE_NUMBER BLOCK_SIZE BLOCKS SIZE_MB TYPE REDUND STRIPE ------------ ----------- ---------- ---------- ---------- -------------------- ------ ------ 1 256 8192 97281 762 DATAFILE UNPROT COARSE 1 257 8192 71681 562 DATAFILE UNPROT COARSE 1 258 8192 12161 97 DATAFILE UNPROT COARSE 1 259 8192 641 6 DATAFILE UNPROT COARSE 1 260 16384 1129 24 CONTROLFILE UNPROT FINE 1 261 512 102401 51 ONLINELOG UNPROT COARSE 1 262 512 102401 51 ONLINELOG UNPROT COARSE 1 263 8192 4737 38 TEMPFILE UNPROT COARSE 1 264 8192 42241 332 DATAFILE UNPROT COARSE 1 265 8192 3201 26 DATAFILE UNPROT COARSE 1 266 512 102401 51 ONLINELOG UNPROT COARSE GROUP_NUMBER FILE_NUMBER BLOCK_SIZE BLOCKS SIZE_MB TYPE REDUND STRIPE ------------ ----------- ---------- ---------- ---------- -------------------- ------ ------ 1 267 512 102401 51 ONLINELOG UNPROT COARSE 1 268 512 7 1 PARAMETERFILE UNPROT COARSE 1 269 512 3707 2 ARCHIVELOG UNPROT COARSE 1 270 512 2 1 ARCHIVELOG UNPROT COARSE 1 271 512 2 1 ARCHIVELOG UNPROT COARSE 1 272 512 72 1 ARCHIVELOG UNPROT COARSE 1 273 512 677 1 ARCHIVELOG UNPROT COARSE 1 274 512 2 1 ARCHIVELOG UNPROT COARSE 1 275 512 2 1 ARCHIVELOG UNPROT COARSE 1 276 512 2 1 ARCHIVELOG UNPROT COARSE 1 277 512 2 1 ARCHIVELOG UNPROT COARSE GROUP_NUMBER FILE_NUMBER BLOCK_SIZE BLOCKS SIZE_MB TYPE REDUND STRIPE ------------ ----------- ---------- ---------- ---------- -------------------- ------ ------ 1 278 512 49819 25 ARCHIVELOG UNPROT COARSE 1 279 512 4297 3 ARCHIVELOG UNPROT COARSE 1 280 512 2 1 ARCHIVELOG UNPROT COARSE 1 281 512 2 1 ARCHIVELOG UNPROT COARSE 1 282 512 11273 6 ARCHIVELOG UNPROT COARSE 1 283 512 51704 26 ARCHIVELOG UNPROT COARSE 1 284 512 62154 31 ARCHIVELOG UNPROT COARSE 1 285 512 2878 2 ARCHIVELOG UNPROT COARSE 1 286 512 2 1 ARCHIVELOG UNPROT COARSE 1 287 512 92 1 ARCHIVELOG UNPROT COARSE 1 288 512 59132 29 ARCHIVELOG UNPROT COARSE GROUP_NUMBER FILE_NUMBER BLOCK_SIZE BLOCKS SIZE_MB TYPE REDUND STRIPE ------------ ----------- ---------- ---------- ---------- -------------------- ------ ------ 1 289 512 2 1 ARCHIVELOG UNPROT COARSE 1 290 512 2856 2 ARCHIVELOG UNPROT COARSE 1 291 512 6967 4 ARCHIVELOG UNPROT COARSE 1 292 512 51 1 ARCHIVELOG UNPROT COARSE 1 293 512 6936 4 ARCHIVELOG UNPROT COARSE 1 294 512 3270 2 ARCHIVELOG UNPROT COARSE 1 295 512 3323 2 ARCHIVELOG UNPROT COARSE 1 296 512 2 1 ARCHIVELOG UNPROT COARSE 1 297 512 52688 26 ARCHIVELOG UNPROT COARSE 1 298 512 7941 4 ARCHIVELOG UNPROT COARSE 2 253 512 3 1 ASMPARAMETERFILE UNPROT COARSE GROUP_NUMBER FILE_NUMBER BLOCK_SIZE BLOCKS SIZE_MB TYPE REDUND STRIPE ------------ ----------- ---------- ---------- ---------- -------------------- ------ ------ 2 255 4096 66591 262 OCRFILE UNPROT COARSE 45 rows selected. select number_kffxp file#, disk_kffxp disk#, count(disk_kffxp) extents from x$kffxp where group_kffxp=1 group by number_kffxp, disk_kffxp order by file#; FILE# DISK# EXTENTS ---------- ---------- ---------- 1 0 2 2 0 1 3 0 85 4 0 8 5 0 1 6 0 1 8 0 1 9 0 1 256 0 762 257 0 562 258 0 97 FILE# DISK# EXTENTS ---------- ---------- ---------- 259 0 6 260 0 24 261 0 51 262 0 51 263 0 38 264 0 332 265 0 26 266 0 51 267 0 51 268 0 1 269 0 2 FILE# DISK# EXTENTS ---------- ---------- ---------- 270 0 1 271 0 1 272 0 1 273 0 1 274 0 1 275 0 1 276 0 1 277 0 1 278 0 25 279 0 3 280 0 1 FILE# DISK# EXTENTS ---------- ---------- ---------- 281 0 1 282 0 6 283 0 26 284 0 31 285 0 2 286 0 1 287 0 1 288 0 29 289 0 1 290 0 2 291 0 4 FILE# DISK# EXTENTS ---------- ---------- ---------- 292 0 1 293 0 4 294 0 2 295 0 2 296 0 1 297 0 26 298 0 4 51 rows selected.
ASM元数据报错案例
参考:
20210826_ASM元数据简介及案例分享
ora-15032 ora-15017 ora-15063 PST元数据异常无法mount
发生此问题时,kfed读某个PST_META块会报错,尝试读另一个PST_META块。利用PST_META的2份数据块,适当对比更改下,kfed merge回故障块,再尝试mount diskgroup即可。
ORA-600[frValAcd30] ora-15017 ora-15063 ACD异常无法mount
原因是异常宕机后,ckpt seq没有正常写入最新的seq。
定位ACD,查看ACD中ckpt信息,按报错提示的seq信息更改后再merge回即可。
asmcmd
参考文档: Oracle Automatic Storage Management Administrator's Guide
启动前需确认ORACLE_SID
su - grid echo $ORACLE_SID +ASM1
使用 -p 标志启动 ASMCMD,则 ASMCMD 会在提示符中显示当前目录。 使用 -v 标志启动 ASMCMD,会显示带有一些命令的其他信息,以帮助用户诊断问题。
asmcmd -p -v
显示帮助 ?或h help <command> ASMCMD [+] > help lsof lsof Lists the open files of the local clients. lsof [--suppressheader] {-G diskgroup|--dbname db| -C instance} The options for the lsof command are described below. --suppressheader - Suppresses column headings. -G diskgroup - List files only from this specified disk group. --dbname db - List files only from this specified database. -C instance - List files only from this specified instance. The following are examples of the lsof command. The first example lists the open files for the data disk group. The second example lists the open files for the Oracle ASM instance.
ASMCMD [+] > lsof DB_Name Instance_Name Path +ASM +ASM1 +ocr.255.4294967295 orcl orcl1 +data/orcl/controlfile/current.260.1158849987 orcl orcl1 +data/orcl/datafile/example.264.1158850001 orcl orcl1 +data/orcl/datafile/sysaux.257.1158849881 orcl orcl1 +data/orcl/datafile/system.256.1158849879 orcl orcl1 +data/orcl/datafile/undotbs1.258.1158849881 orcl orcl1 +data/orcl/datafile/undotbs2.265.1158850305 orcl orcl1 +data/orcl/datafile/users.259.1158849881 orcl orcl1 +data/orcl/onlinelog/group_1.261.1158849989 orcl orcl1 +data/orcl/onlinelog/group_2.262.1158849991 orcl orcl1 +data/orcl/onlinelog/group_3.266.1158850441 orcl orcl1 +data/orcl/onlinelog/group_4.267.1158850443 orcl orcl1 +data/orcl/tempfile/temp.263.1158849995 ASMCMD [+] > lsof -G ocr DB_Name Instance_Name Path +ASM +ASM1 +ocr.255.4294967295 ASMCMD [+] > lsof -G data DB_Name Instance_Name Path orcl orcl +data/orcl/controlfile/current.260.691577263 orcl orcl +data/orcl/datafile/example.265.691577295 orcl orcl +data/orcl/datafile/sysaux.257.691577149 orcl orcl +data/orcl/datafile/system.256.691577149 orcl orcl +data/orcl/datafile/undotbs1.258.691577151 orcl orcl +data/orcl/datafile/users.259.691577151 orcl orcl +data/orcl/onlinelog/group_1.261.691577267 orcl orcl +data/orcl/onlinelog/group_2.262.691577271 orcl orcl +data/orcl/onlinelog/group_3.263.691577275 orcl orcl +data/orcl/tempfile/temp.264.691577287 ASMCMD [+] > lsof -C +ASM1 DB_Name Instance_Name Path +ASM +ASM1 +ocr.255.4294967295 ASMCMD [+] > lsof -C orcl1 DB_Name Instance_Name Path orcl orcl1 +data/orcl/controlfile/current.260.1158849987 orcl orcl1 +data/orcl/datafile/example.264.1158850001 orcl orcl1 +data/orcl/datafile/sysaux.257.1158849881 orcl orcl1 +data/orcl/datafile/system.256.1158849879 orcl orcl1 +data/orcl/datafile/undotbs1.258.1158849881 orcl orcl1 +data/orcl/datafile/undotbs2.265.1158850305 orcl orcl1 +data/orcl/datafile/users.259.1158849881 orcl orcl1 +data/orcl/onlinelog/group_1.261.1158849989 orcl orcl1 +data/orcl/onlinelog/group_2.262.1158849991 orcl orcl1 +data/orcl/onlinelog/group_3.266.1158850441 orcl orcl1 +data/orcl/onlinelog/group_4.267.1158850443 orcl orcl1 +data/orcl/tempfile/temp.263.1158849995 如果运行带有 -l 标志的 ASMCMD ls(列表目录),则每个别名都与别名引用的系统生成的文件一起列出。 ASMCMD [+data/ORCL] > ls -l Type Redund Striped Time Sys Name Y ARCHIVELOG/ Y CONTROLFILE/ Y DATAFILE/ Y ONLINELOG/ Y PARAMETERFILE/ Y TEMPFILE/ N spfileorcl.ora => +DATA/ORCL/PARAMETERFILE/spfile.268.1158850445 ASMCMD [+] > lsdg State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED EXTERN N 512 4096 1048576 10240 8060 0 8060 0 N DATA/ MOUNTED EXTERN N 512 4096 1048576 1024 628 0 628 0 Y OCR/ ASMCMD [+] > lsdsk -k Total_MB Free_MB OS_MB Name Failgroup Failgroup_Type Library Label UDID Product Redund Path 1024 628 1024 OCR_0000 OCR_0000 REGULAR System UNKNOWN /dev/asm-diskb 10240 8060 10240 DATA_0000 DATA_0000 REGULAR System UNKNOWN /dev/asm-diskc ASMCMD [+] > lsdsk -p Group_Num Disk_Num Incarn Mount_Stat Header_Stat Mode_Stat State Path 2 0 3916018817 CACHED MEMBER ONLINE NORMAL /dev/asm-diskb 1 0 3916018816 CACHED MEMBER ONLINE NORMAL /dev/asm-diskc Running ASMCMD commands in a script for ((i = 1; i <=3; i++)) do asmcmd lsdsk -G data done ++++++++++++++ ASMCMD Instance Management Commands dsget Retrieves the discovery diskstring value that is used by the Oracle ASM instance and its clients. dsset Sets the disk discovery diskstring value that is used by the Oracle ASM instance and its clients. lsct Lists information about current Oracle ASM clients. lsop Lists the current operations on a disk group or Oracle ASM instance. lspwusr Lists the users from an Oracle ASM password file. orapwusr Adds, drops, or changes an Oracle ASM password user. shutdown Shuts down an Oracle ASM instance. spbackup Backs up an Oracle ASM SPFILE. spcopy Copies an Oracle ASM SPFILE. spget Retrieves the location of the Oracle ASM SPFILE. spmove Moves an Oracle ASM SPFILE. spset Sets the location of the Oracle ASM SPFILE. startup Starts up an Oracle ASM instance. ++++++++++++++++++++++++++++++ ASMCMD File Management Commands cd Changes the current directory to the specified directory. cp Enables you to copy files between disk groups, and between a disk group and the operating system. du Displays the total disk space occupied by files in the specified Oracle ASM directory and all of its subdirectories, recursively. find Lists the paths of all occurrences of the specified name (with wildcards) under the specified directory. ls Lists the contents of an Oracle ASM directory, the attributes of the specified file, or the names and attributes of all disk groups. lsof Lists the open files. mkalias Creates an alias for system-generated filenames. mkdir Creates Oracle ASM directories. pwd Displays the path of the current Oracle ASM directory. rm Deletes the specified Oracle ASM files or directories. rmalias Deletes the specified alias, retaining the file that the alias points to. ++++++++++++++++++++++++++++++ ASMCMD Disk Group Management Commands chdg Changes a disk group (add, drop, or rebalance). chkdg Checks or repairs a disk group. dropdg Drops a disk group. iostat Displays I/O statistics for disks. lsattr Lists the attributes of a disk group. lsdg Lists disk groups and their information. lsdsk Lists disks Oracle ASM disks. lsod Lists open devices. md_backup Creates a backup of the metadata of mounted disk groups. md_restore Restores disk groups from a backup of the metadata. mkdg Creates a disk group. mount Mounts a disk group. offline Offlines a disk or a failure group. online Onlines a disk or a failure group. rebal Rebalances a disk group. remap Relocates data in a range of physical blocks on a disk. setattr Sets attributes in a disk group. umount Dismounts a disk group.
ASM instance
Starting Up an Oracle ASM Instance
SQLPLUS /NOLOG SQL> CONNECT SYS AS SYSASM SQL> STARTUP
Starting Up an Oracle ASM instance with an Incorrect SPFILE Path
If the SPFILE path in the GPNP profile is incorrect, you can start the Oracle ASM instance as follows:
Create a PFILE with one line in it that identifies the path to the SPFILE.
For example:
Create the /u01/oracle/dbs/spfileasm_init.ora file that contains:
SPFILE='+DATA/asm/asmparameterfile/asmspfile.ora'
Start up the instance using the initialization parameter file.
For example:
SQL> STARTUP PFILE=/u01/oracle/dbs/spfileasm_init.ora
After the instance is running, use the ASMCMD spset command to update the SPFILE path in the GPNP profile. See "spset".
For example:
ASMCMD> spset +DATA/asm/asmparameterfile/asmspfile.ora
At startup, the Oracle ASM instance attempts to mount the following disk groups:
Disk groups specified in the ASM_DISKGROUPS initialization parameter
Disk group used by Cluster Synchronization Services (CSS) for voting files
Disk groups used by Oracle Clusterware for Oracle Cluster Registry (OCR)
Disk group used by the Oracle ASM instance to store the ASM server parameter file (SPFILE)
Shutting Down an Oracle ASM Instance
如果 Oracle Cluster Registry (OCR) 或投票文件存储在磁盘组中,则只能通过关闭 Oracle ASM 实例(作为关闭节点上的群集件的一部分)来卸除磁盘组。
要关闭集群件,请运行 crsctl stop crs。