ASM中的X$表

ASM看起来像个黑盒子,因为我们从文档中得到的信息有限。实际上ASM Instance和Database Instance没有什么区别,Oracle只是修改了代码使得其专注于存储管理而已。所以一些研究Database Instance的方法在ASM中照样有效,比如sql trace10046事件等,这可以帮助我们认识到ASM内部的一些东西。


alter session set sql_trace=true;
select count(*) from v$asm_file;
alter session set sql_trace=false;

找到对应的trace file,可以发现有如下语句:

select inst_id,group_kffil,number_kffil,compound_kffil,incarn_kffil,
blksiz_kffil,blkcnt_kffil,filsiz_kffil,filspc_kffil,sftype_kffil,
decode(redun_kffil,17,’UNPROT’,18,’MIRROR’,19,’HIGH’,
35,’PARITY’,36,’PARITY’,37,’PARITY’,38,’PARITY’),
decode(bitand(fdflg_kffil, 2), 2, ‘FINE’, ‘COARSE’),
crdate_kffil,mddate_kffil,
decode(thinned_kffil, 0, ‘U’, 4294967295, ‘N’, ‘Y’)
from x$kffil
where incarn_kffil <> 0 and number_kffil > 255

可以发现v$asm_file是基于x$kffil的,同样的方法,可以追踪到其他相关的v$视图的来源。可以通过v$fixed_table来列出所有的x$表:


Oracle11G> select name from v$fixed_table where name like ‘X$KF%';

NAME
—————————————-
X$KFALS
X$KFCBH
X$KFCCE
X$KFBH
X$KFDSK
X$KFDSK_STAT
X$KFDAT
X$KFDFS
X$KFDDD
X$KFGRP
X$KFGRP_STAT
X$KFGMG
X$KFGBRB
X$KFKID
X$KFKLIB
X$KFMDGRP
X$KFNCL
X$KFNSDSKIOST
X$KFTMTA
X$KFFIL
X$KFFXP
X$KFDPARTNER
X$KFCLLE
X$KFENV
X$KFVOL
X$KFVOLSTAT
X$KFVOFS
X$KFVOFSV

ASM的X$表的命名比database的相对要易懂一些,但也是缩写的,具体和v$的对应关系和描述可以参考这里



无觅相关文章插件,快速提升流量

没有评论


(Required)
(Required, will not be published)