oracle asm常用维护命令(全)

磁盘--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。

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值