设为首页 加入收藏

TOP

介绍Oracle自带的一些ASM维护工具(kfod/kfed/amdu)(一)
2015-11-21 02:07:05 来源: 作者: 【 】 浏览:1
Tags:介绍 Oracle 自带 一些 ASM 维护 工具 kfod/kfed/amdu

1.前言

ASM(Automatic Storage Management)是Oracle主推的一种面向Oracle的存储解决方案,它是一个管理卷组或者文件系统的软件,目前已经被RAC环境广泛使用,但是ASM由于其高度的封装性,使得我们很难知道窥探其内部的原理。ASM如果一旦出现问题,通常都很难处理。即便在有很完备的RMAN备份的情况下,恢复起来都可能需要很长的时间。

简单的讲ASM是通过一个ASM实例来实现对磁盘的管理。这个和Oracle 实例很类似。ASM实例也有SGA和后台进程组成。但是ASM实例相对的工作很少,所以它的SGA 相对较小,其主要维护一些ASM的元数据,包括磁盘组元数据(disk group metadata)、磁盘元数据(disk metadata)、文件元数据(file metadata),ASM的体系结构如下图:

\

?

ASM实例管理ASM磁盘组由一个个的ASM磁盘组成,每个磁盘又由多个区组成,每个区又由多个AU组成,它们共同协作就构成了ASM的基础应用。

2.ASM体系结构

前面说了ASM中的文件总体上来说分为两大类,元文件和数据文件。数据文件包含Oracle的数据文件、控制文件、重做日志文件、归档日志文件等等。对于ASM来说,只要是非元文件,就是数据文件。

每一个文件在ASM中都有一个专门的索引号,也就是编号,ASM文件索引号从1开始。其中前255个,也就是1至255号文件,都是元文件。256之后的是其他各种文件。

元文件中包含了各种ASM的配置、各类数据文件信息还有目录、别名等等信息,都是在元文件中的。所有V$ASM_开头视图的信息,都来自元文件中。

其中,1号文件包含所有文件的磁盘占用信息,包括元文件、甚至1号文件自身的空间分布信息,也都是在1号文件内部。每个文件在它里面占用一个块(4096字节,元数据块大小为4K)的空间。

从256号文件开始,是数据库的各类文件。假设你放在ASM上的第一个文件是一个控制文件A,第二个文件是一个数据文件B。哪么控制文件A在ASM中的索引号是256,数据文件B的索引号是257,但是这255个元文件并不是都有内容,其中只有前9个文件有内容,我们可以通过访问x$kffxp内部表获取相关的信息,如下:

SQL>SELECT number_kffxp file#, disk_kffxp disk#, COUNT(disk_kffxp) extents

2 FROMx$kffxp

3 WHERE group_kffxp=1

4 AND disk_kffxp <> 65534

5 GROUP BY number_kffxp, disk_kffxp

6 ORDER BY 1;

FILE# DISK# EXTENTS

-------------------- ----------

1 0 2

2 0 1

3 0 28

3 3 14

4 0 5

4 3 3

5 0 1

6 0 1

8 3 1

9 0 1

256 0 482

.........

268 3 7

269 0 1

35 ROWSselected.

file# 1 -file directory

file# 2 -disk directory

file# 3 -active Change Directory(ACD)

file# 4 -continuing Operations Directory (COD)

file# 5 -template directory

file# 6 -alias directory

file# 7 -volume directory

file# 8 -diskUsed Space Directory (USD)

file# 9 -attributes directory

其中1号文件总是开始在0号磁盘2号AU,这是ASM中定位文件的起点,它的作用,有点相当于磁盘上的引导区,在电脑开机后负责将OS启动起来。每次从ASM中读数据时,Oracle都要先读到1号文件,从中找出要读的目标文件在磁盘上的分布位置,然后再去读取相应的文件的数据。

\

?

那么问题来了,0号AU存放的什么信息呢?这个我想大家已经猜到了,就是存放的ASM磁盘头(disk header)信息,也是我们随后会重点介绍的内容,一旦该磁盘配置好后,如果不再对其做其它的操作,这部分内容相对就固定不变,但是ASM中最为脆弱的又是ASM磁盘头。如果磁盘头逻辑损坏了,即corrupt了,整个磁盘组将不能够mount,依赖于ASM实例的数据库也将不能够访问ASM磁盘并正常启动。后续我们会通过kfed工具对其进行解读。

3.kfod和kfed

kfod和kfed是ASM自带的未公开的工具,kfod主要用于在系统级别对ASM信息的查看,而kfed它可以读取和修改ASM磁盘的元数据,对修复一些关键错误非常有用,接下来分别介绍和演示下这两个工具。(以下使用的环境数据库版本都是11gr2

3.1. kfod介绍

我们以前要想访问和查询ASM的信息,只能通过数据库视图进行查询,无法通过操作系统层进行访问,但是现在我们可以直接通过kfod工具,直接在操作系统层对ASM的相关信息进行查阅,我们先来看下kfod的帮助,输入kfod –h得到结果如下:

[oracle@rac01~]$ kfod -h

KFOD-00101:LRM error [107] while parsing command line arguments

_asm_a/llow_only_raw_disks KFOD allow only raw devices[_asm_allow_only_raw_disks=TRUE/(FALSE)]

_asm_l/ibraries ASMLibraries[_asm_libraries=lib1,lib2,...]

_asms/id ASM Instance[_asmsid=sid]

a/sm_diskstring ASM Diskstring[asm_diskstring=discoverystring, discoverystring ...]

c/luster KFOD cluster[cluster=TRUE/(FALSE)]

db/_unique_name db_unique_name for ASMinstance[db_unique_name=dbname]

di/sks Disks to discover[disks=raw,asm,badsize,all]

ds/cvgroup Include group name[dscvgroup=TRUE/(FALSE)]

g/roup Disks in diskgroup[group=diskgroup]

h/ostlist hostlist[hostlist=host1,host2,...]

metadata_a/usize AU Size for Metadata SizeCalculation

metadata_c/lients Client Count for Metadata SizeCalculation

metadata_d/isks Disk Count for Metadata SizeCalculation

metadata_n/odes Node Count for Metadata SizeCalculation

metadata_r/edundancy Redundancy for Metadata SizeCalculati

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇为什么要学习Oracle技术? 下一篇oracle中往varchar2格式的字段中..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: