2014年3月21日晚SHOUG上海ORACLE用户组首次线下活动

2014年3月21日晚SHOUG上海ORACLE用户组首次线下活动,本次活动限制名额50人,如欲参建议尽早报名。

具体时间为:2014年3月21日(周五)晚上18~21时

具体地点为: 中国上海市黄浦区天津路155号名人商业大厦12楼Oracle公司内

 

本次SHOUG议题如下:

  1. 刘相兵 – 《介绍SHOUG的组织宗旨》 40分钟左右
  2. 唐涛 – 《介绍ORACLE的大数据解决方案》 40分钟左右
  3. 一号店 柳阳 – 《Exadata在电商的实践》   40分钟左右
  4. 程飞 – 《oracle常见异常恢复处理思路 》 40分钟左右

 

按照国际惯例会后将提供presentation的PDF版本,但不提供会议的视频。

 

下载并填写《SHOUG2014年3月21日活动报名表格》后,请将本报名表格发送到 joinevent@shoug.info,并抄送maclean.liu@shoug.info 和 liu.maclean@gmail.com(避免漏看您的邮件)。

看图说话:Maclean在Oracle的这一年多所留下的足迹

2012年8月入职,当天领到笔记本,O记发的笔记本都预装了 OBI:

2012-08-13 13.27.39
2012-08-13 13.25.04
2012-08-13 14.02.00

2012-08-13 13.23.19

上海ORACLE的窗外景

 

2012-08-13 13.37.59

Maclean Liu在Oracle的工牌和名片:

2013-09-30 13.09.26

2012-08-17 16.55.13 (1)

在原厂第一次乘高铁出差

2012-08-19 21.55.51

第一次出差南京 下榻在金陵饭店

2012-08-20 18.02.29 (1)

 

第一次签原厂的工单 timesheet:

2012-08-21 14.33.32

ORACLE在上海的OFFICE位于 南京东路,楼下是Apple苹果零售店,公司楼下:

2012-08-24 13.09.24

在原厂第一次加班夜宵:

2012-08-28 20.17.16

在原厂第一次飞机出差,去武汉

2012-09-01 20.33.13

在武汉的现场:

2012-09-03 17.27.44 (1)

武汉出差,住在万达威斯丁:

2012-09-03 19.52.46

2012-09-05 08.09.32

在武汉吃热干面:

2012-09-05 12.04.05

在客户现场忙碌一天,终于回到酒店,累得不想出去吃饭,就在酒店内解决:

2012-11-01 18.52.35

第一次报销贴发票,长期跑现场,导致每次都堆积大量发票,需要一个下午甚至一天来贴发票:

2012-09-10 14.57.16

报销单:

2012-09-10 14.56.46

公司福利下午茶点心:

2012-09-10 15.51.36

开始在ORACLE官方博客blogs.oracle.com 上发大量技术文章:

2012-10-13 21.29.45

工行的数据中心位于外高桥保税区内,哪里还有一个18M的Base:

2012-10-17 12.52.25

这是从公司朝外看 ,南京东路这边在大兴土木

2012-10-26 13.35.35

已经装了一堆的 旅行类IOS APPS:

2012-12-03 09.57.06

在上海电信的楼下发现老电信的基石:

2012-12-05 12.50.48

O记年会:

2013-01-04 17.41.50

2013-01-04 17.50.18

2013-01-04 18.04.17

2013-01-04 18.08.10

2013-01-04 18.08.34

2013-01-04 18.25.27

2013-01-04 18.35.24

叫了一部荣威950送我上班:

2013-01-10 21.02.46

在某银行的指挥中心:这个图还是不放了。。

去南京给客户培训,不爱出差的我是早上6点赶高铁去南京的:

2013-01-19 08.45.35

一等座,在车头的位置:

2013-01-19 08.49.42

住在南京威斯丁:

2013-01-20 07.43.03

2013-01-20 07.47.10

俯瞰玄武湖:

2013-01-20 07.50.57

杭州出差住在 西溪喜来登

2013-01-22 17.53.22

2013-01-22 18.05.05

2013-01-22 18.05.17

赶路时的午餐:

2013-02-01 08.58.11

OFFICE里我的箱子:

2013-02-26 16.46.48

某客户的园区不错,有个水塘 还有天鹅:

2013-03-05 12.08.34

2013-03-05 12.08.46

2013-03-05 12.08.59

旅途中有空就动笔写写,发到blogs.oracle.com , 慢慢积累:

2013-03-20 10.00.55

2013-03-20 10.01.02

有些客户那里不能带进电脑和U盘,只能带手机,记不住的命令就拍照存档:

2013-03-27 14.30.40

杭州的洲际酒店,是个大球:

2013-03-31 18.26.57

2013-03-31 18.32.48

住在洲际,洲际的好处是离开 杭州城站较近:

2013-03-31 19.26.15

杭州那几天太热了,不想吃东西,中午随便解决:

2013-04-01 13.30.19

家里开始大兴园艺:

2013-04-10 14.09.39

2013-04-10 14.09.49

2013-04-21 13.10.26-2

2013-05-05 17.06.52

工行数据中心的绿化还是不错的:

2013-05-23 08.07.58

在工行吃个午饭不容易:

2013-04-19 12.29.48

2013-09-29 12.10.15

家里看看Exadata的文档:

2013-05-05 19.39.53

2013年之后太忙了,偶尔才回一次公司:

2013-05-22 13.37.31

2013-05-22 17.39.18

某用户的Exadata IO高到了7.5GB/s

2013-06-01 09.56.40

2013-06-01 15.03.04

参加在大连的ACS高级服务研讨会,我讲了下ADDM DBA:

2013-06-21 08.57.24

大连的凯宾斯基饭店:

2013-06-21 13.16.39

在南京讲课, 中午顺道去软件大道上华为的基地蹭饭:

2013-06-26 11.55.59

饭菜还是不错的哦!

2013-06-26 12.01.31

正处理一个故障呢!日志拷不了,只能拍照看

2013-06-30 00.17.20

湖光鱼影:

2013-07-04 16.05.30

池中鱼蛙:

2013-09-03 11.51.52

家里的台式机升级到 4* 8GB 内存:

2013-08-07 19.51.06

家里的实验用机:

2013-08-07 20.36.02

在杭州吃蟹火锅:

2013-08-13 18.17.45

客户那里发现的自学光盘:

2013-10-24 13.54.13

这个是去普吉岛旅游,我在一个小岛的码头上,我的普吉岛游记 见http://www.askmaclean.com/archives/%E6%99%AE%E5%90%89%E5%B2%9B%E5%8F%8Ako-yao-yai%E6%B8%B8%E8%AE%B0.html:

2013-06-14 10.47.38

Maclean对Oracle社区的一点点小建设

Maclean对Oracle社区的一点点小建设,欢迎大家不吝指正不足之处,今后我会加倍努力的

 

 

专题 标题 地址
Oracle性能调优 【视频教学:性能优化】Maclean Liu的Oracle性能优化讲座第一回《真正读懂Oracle SQL执行计划》 http://www.askmaclean.com/archives/read-sql-execution-plan.html
【技术分享】开Oracle调优鹰眼,深入理解AWR性能报告  第一讲 http://www.askmaclean.com/archives/awr-hawk-eyes-training.html
【技术分享】开Oracle调优鹰眼,深入理解AWR性能报告  第二讲 http://www.askmaclean.com/archives/awr-tuning-hawk-eyes.html
【AskMaclean技术分享Oracle数据库优化】AWR鹰眼系列AWR报告全面指标分析 http://www.askmaclean.com/archives/awr-tuning-doc.html
【Maclean Liu技术分享】拨开Oracle优化器迷雾探究Histogram之秘 http://t.askmaclean.com/thread-2172-1-1.html
Maclean讲SQL调优精要 http://t.askmaclean.com/thread-2702-1-1.html
Maclean技术分享Oracle数据库优化经验- ADDM DBA http://t.askmaclean.com/thread-2607-1-1.html
Maclean教你读Oracle 10046 SQL TRACE http://www.askmaclean.com/archives/maclean-10046-sql-trace.html
Maclean教你读SQL TRACE TKProf报告 http://www.askmaclean.com/archives/maclean-tech-tkprof-10046.html
Maclean博客Oracle SQL性能优化专题 https://blogs.oracle.com/askmaclean/entry/oracle_sql%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%E4%B8%93%E9%A2%98
Oracle基础学习篇 Maclean的Oracle基础学习攻略 http://t.askmaclean.com/thread-2699-1-1.html
【仍在连载中】maclean liu的oracle学习经历 http://t.askmaclean.com/thread-1485-1-1.html
【Maclean技术分享】学习甲骨文数据库的自由之翼 http://t.askmaclean.com/thread-2560-1-1.html
Oracle学前Unix/Linux基础 http://train.askmaclean.com/node/35
新来的去学习Oracle前的准备知识 做题目,做完给出成绩 http://train.askmaclean.com/node/5 
【AskMaclean技术分享】Oracle dba必须的技能列表 http://t.askmaclean.com/thread-3256-1-1.html
【技术分享】DBA十大核心竞争力 基于Oracle TRACE的故障诊断 http://t.askmaclean.com/thread-2347-1-1.html
RAC安装篇 Maclean教你用Vbox安装 10g/11g RAC cluster 信息汇总贴 http://t.askmaclean.com/thread-2067-1-1.html
【Maclean Liu技术分享】12c 12.1.0.1 RAC安装教学视频  基于Vbox+Oracle Linux 5.7 http://t.askmaclean.com/thread-2667-1-1.html
 [视频教学]Maclean教你用Vbox在Enterprise Linux 5安装Oracle 10gR2 RAC 10g RAC按照这个装不会有任何问题 http://t.askmaclean.com/thread-891-1-1.html
【视频教学】Maclean教你用Vbox在Linux 5安装Oracle 11gR2 RAC 11g RAC按照这个装不会有任何问题 http://t.askmaclean.com/thread-1061-1-1.html
【视频教学】Maclean教你用Vbox在Linux 6.3上安装Oracle 11gR2 RAC 11g RAC按照这个装不会有任何问题 http://t.askmaclean.com/thread-2007-1-1.html
DataGuard Standby篇 【Maclean Liu视频技术分享】11g ocm考纲复习Active Data Guard http://t.askmaclean.com/thread-2530-1-1.html
11g/12c新特性 升级到11g 必备工具:一张列表帮助你摆脱升级11gR2带来的烦恼 http://t.askmaclean.com/thread-1642-1-1.html
Maclean 研究12c新特性篇,Oracle Database 12c新特性汇总页面 https://blogs.oracle.com/askmaclean/entry/oracle_database_12c%E6%96%B0%E7%89%B9%E6%80%A7
other Maclean 的Oracle数据恢复专题 https://blogs.oracle.com/askmaclean/entry/oracle%E6%95%B0%E6%8D%AE%E6%81%A2%E5%A4%8D%E4%B8%93%E9%A2%98
关于Maclean 个人的介绍 http://www.askmaclean.com/know-maclean-liu
https://blogs.oracle.com/askmaclean/
以上部分视频的下载地址 https://www.box.com/s/ckrhvr9dklejbm9dgstl

【文档】Maclean介绍Oracle ASM基础概念和原理

【文档】Maclean介绍Oracle ASM基础概念和原理  原帖在这里:http://www.askmaclean.com/archives/know-oracle-asm-basic-html.html

 

asm arch

这里放出PDF版本下载:http://www.askmaclean.com/wp-content/uploads/2014/02/Maclean介绍Oracle-ASM基础概念和原理1.pdf

【转】为什么互联网公司都在开曼群岛注册?

开曼群岛

 

本文来自《创业最前线》

开曼群岛(Cayman Islands)是英国在西印度群岛的一块海外属地,由大开曼、小开曼和开曼布拉克3个岛屿组成。开曼群岛是世界第四大离岸金融中心,并是著名的潜水胜地。(Wiki)

其它知名的离岸金融中心包括英属维尔京群岛、萨摩亚、香港、关岛等。离岸公司是指并不在注册地进行实质业务的公司。当地政府对这类公司没有任何税收,只收取少量的年度管理费,具有高度的保密性、减免税务负担、无外汇管制三大特点。

根据开曼群岛的税收规定,岛内税种只有进口税、工商登记税、旅游者税等几个简单的税种。几十年来没有开征过个人所得税、公司所得税、资本利得税、不动产税。这样,国内互联网公司选择设立立案公司的原因就呼之欲出了。

以下的内容来自张珂在知乎对这一问题的回答,详细解读了互联网公司在开曼群岛注册(设立离岸公司)的优势,给正在创业路上的你参考。

不仅仅是互联网公司,绝大多数知道开曼群岛这个地方的都会把公司注册在这儿。主要是它的政策太诱人了:

1.任何国籍年满18岁的人都可以注册;

2.注册股本只要50,000美元,且不需要验资(这可能是互联网公司注册开曼的原因,大家刚起步时都太小);

3.采用的是英式普法,公司形式是豁免公司;

4.豁免公司意味着不用在当地交税,避税效果巨强;

5.并且股东资料绝对保密;

6.还不用在开曼举行周年股东大会;

7.所有能想象到的金融服务业大佬全在开曼,有需要的时候不受其它繁琐政策限制(这意味着你在内地开公司你的公司账户也不用跨国,直接在这些大佬的分行运行);

8.开公司只需要一位股东、一位董事,且股东董事可同为一人(干,我都心动了);

9.可以选择任何词汇在你的公司名称里面(但信托、再保险等要申请),像大学、研究所还有国内受限制的环球、联邦等都可以用;

10.除了对银行、保险、军事等需申请外,公司用途无限制,你想干什么干什么;

11.在国内你享受的是外资待遇,且注册成功后直接可以投资(比如控股、合资、独资);

12.刚做起来没做好扛不住了需要暂停公司也巨方便,开曼允许随时暂停公司,只要交年报费和年审费。

【Oracle ASM Metadata】Alias Directory (file #6)

《深入了解Oracle ASM(二):ASM File number 1 文件目录》   中我们介绍了ASM metadata FILE NUMBER 1 FILE DIRECTORY, FILE DIRECTORY中记录了ASM中每一个文件的信息,但是注意FILE DIRCTORY中不记录文件的名字; 在ASM中文件名字以ALIAS的形式存放,包括文件和目录,均存放在FILE NUMBER 6 ALIAS Directory 中。

ALIAS Directory中保存了本diskgroup中按路径分层的文件名信息。存放在ASM中的ORACLE 数据库文件均会被赋予一个系统生成的名字,这个名字基于文件类型、数据库实例名和一些特征信息,例如表空间名。

除了系统赋予的文件名,用户还可以增加额外的alias,例如 :

alter tablespace MAC add datafile  ‘+DATA’ size 10M;  ==>只生成系统文件名

alter tablespace MAC add datafile ‘+DATA/MACDB/datafile/data1.dbf’ size 10M;  ==> 会生成系统赋予的文件名和一个用户自定义alias(+DATA/MACDB/datafile/data1.dbf)

 

 

SQL>  SELECT xnum_kffxp "Extent", au_kffxp "AU", disk_kffxp "Disk" from  x$kffxp
  2      WHERE group_kffxp=1 and number_kffxp=6
  3      and xnum_kffxp <> 2147483648;

    Extent         AU       Disk
---------- ---------- ----------
         0          7          4
         0          8          0
         0          6          8

SQL> select path ,disk_number from v$asm_disk where disk_number=4;

/oracleasm/asm-disk05
          4

kfed read /oracleasm/asm-disk05 aus=4194304  aun=7 blkn=0|less

[oracle@mlab2 ~]$ kfed read /oracleasm/asm-disk05 aus=4194304  aun=7 blkn=0|less
kfbh.endian:                          1 ; 0x000: 0x01
kfbh.hard:                          130 ; 0x001: 0x82
kfbh.type:                           11 ; 0x002: KFBTYP_ALIASDIR
kfbh.datfmt:                          1 ; 0x003: 0x01
kfbh.block.blk:                       0 ; 0x004: blk=0
kfbh.block.obj:                       6 ; 0x008: file=6
kfbh.check:                  4094241978 ; 0x00c: 0xf4092cba
kfbh.fcn.base:                      698 ; 0x010: 0x000002ba
kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000
kfbh.spare1:                          0 ; 0x018: 0x00000000
kfbh.spare2:                          0 ; 0x01c: 0x00000000
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
kfade[0].entry.incarn:                1 ; 0x024: A=1 NUMM=0x0
kfade[0].entry.hash:         2974797312 ; 0x028: 0xb14fce00
kfade[0].entry.refer.number:          1 ; 0x02c: 0x00000001
kfade[0].entry.refer.incarn:          1 ; 0x030: A=1 NUMM=0x0
kfade[0].name:                   ASMDB1 ; 0x034: length=6
kfade[0].fnum:               4294967295 ; 0x064: 0xffffffff
kfade[0].finc:               4294967295 ; 0x068: 0xffffffff
kfade[0].flags:                       4 ; 0x06c: U=0 S=0 S=1 U=0 F=0
kfade[0].ub1spare:                    0 ; 0x06d: 0x00
kfade[0].ub2spare:                    0 ; 0x06e: 0x0000
kfade[1].entry.incarn:                0 ; 0x070: A=0 NUMM=0x0
kfade[1].entry.hash:                  0 ; 0x074: 0x00000000
kfade[1].entry.refer.number:          0 ; 0x078: 0x00000000
kfade[1].entry.refer.incarn:          0 ; 0x07c: A=0 NUMM=0x0
kfade[1].name:                          ; 0x080: length=0
kfade[1].fnum:                        0 ; 0x0b0: 0x00000000
kfade[1].finc:                        0 ; 0x0b4: 0x00000000
kfade[1].flags:                       0 ; 0x0b8: U=0 S=0 S=0 U=0 F=0
kfade[1].ub1spare:                    0 ; 0x0b9: 0x00
kfade[1].ub2spare:                    0 ; 0x0ba: 0x0000
kfade[2].entry.incarn:                0 ; 0x0bc: A=0 NUMM=0x0
kfade[2].entry.hash:                  0 ; 0x0c0: 0x00000000
kfade[2].entry.refer.number:          0 ; 0x0c4: 0x00000000
kfade[2].entry.refer.incarn:          0 ; 0x0c8: A=0 NUMM=0x0
kfade[2].name:                          ; 0x0cc: length=0
kfade[2].fnum:                        0 ; 0x0fc: 0x00000000
kfade[2].finc:                        0 ; 0x100: 0x00000000
kfade[2].flags:                       0 ; 0x104: U=0 S=0 S=0 U=0 F=0
kfade[2].ub1spare:                    0 ; 0x105: 0x00
kfade[2].ub2spare:                    0 ; 0x106: 0x0000
kfade[3].entry.incarn:                0 ; 0x108: A=0 NUMM=0x0
kfade[3].entry.hash:                  0 ; 0x10c: 0x00000000
kfade[3].entry.refer.number:          0 ; 0x110: 0x00000000
kfade[3].entry.refer.incarn:          0 ; 0x114: A=0 NUMM=0x0

KFBTYP_ALIASDIR 代表metadata block类型是ALIAS DIRECTORY

kffdnd.fstblk.number 代表父目录的refer.number
kffdnd.overfl.number 代表父目录所在块号
kfade[0].entry.refer.number: 每一个文件有一个refer.number,仅有目录的refer.number是有意义的,普通文件的refer.number没有意义,因为不会被参考
kfade[0].name 文件名
kfade[0].fnum 文件号
kfade[0].finc 文件incarnation 号

【Oracle ASM Metadata】Template Directory (file #5)

【Oracle ASM Metadata】Template Directory (file #5)中存放的是template directory 模板目录,template directory 模板目录提供 对现有文件组的属性信息,当ASM文件被创建出来时将应用这些属性。

每一个template directory元数据块均由template directory记录的队列组成。

由于template模板的数量一般很少,也仅在ASM 文件创建时被使用,所以该模板目录中的记录是无序存放。同时解析一个模板名则要求对该目录的全扫描。

当一个diskgroup被创建出来,就会有几个SYSTEM系统template模板被自动创建,每一个系统模板对应一种ORACLE文件类型。 系统模板为ORACLE文件类型定义默认属性,在之后可以修改以满足用户需求。

除了系统模板外, 还可以有用户创建模板。以进一步客制化各文件创建后的属性。

asm template

 

 

SQL> SELECT xnum_kffxp "Extent", au_kffxp "AU", disk_kffxp "Disk" from  x$kffxp
  2      WHERE group_kffxp=1 and number_kffxp=5
  3      and xnum_kffxp <> 2147483648;

    Extent         AU       Disk
---------- ---------- ----------
         0          4         12
         0          2         14
         0          2          9

SQL> select path ,disk_number from v$asm_disk where disk_number=12;

PATH
--------------------------------------------------------------------------------
DISK_NUMBER
-----------
/oracleasm/asm-disk13
         12

[oracle@mlab2 ~]$ kfed read /oracleasm/asm-disk13 aus=4194304  aun=4 blkn=0|less
kfbh.endian:                          1 ; 0x000: 0x01
kfbh.hard:                          130 ; 0x001: 0x82
kfbh.type:                           10 ; 0x002: KFBTYP_TMPLTDIR
kfbh.datfmt:                          1 ; 0x003: 0x01
kfbh.block.blk:                       0 ; 0x004: blk=0
kfbh.block.obj:                       5 ; 0x008: file=5
kfbh.check:                    17465861 ; 0x00c: 0x010a8205
kfbh.fcn.base:                        0 ; 0x010: 0x00000000
kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000
kfbh.spare1:                          0 ; 0x018: 0x00000000
kfbh.spare2:                          0 ; 0x01c: 0x00000000
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
kftmde[0].entry.incarn:               0 ; 0x024: A=0 NUMM=0x0
kftmde[0].entry.hash:                 0 ; 0x028: 0x00000000
kftmde[0].entry.refer.number:         0 ; 0x02c: 0x00000000
kftmde[0].entry.refer.incarn:         0 ; 0x030: A=0 NUMM=0x0
kftmde[0].templ.name:                   ; 0x034: length=0
kftmde[0].templ.flags:                0 ; 0x054: S=0 S=0 S=0 H=0
kftmde[0].templ.redun:                0 ; 0x058: SCHE=0x0 NUMB=0x0
kftmde[0].templ.strpwdth:             0 ; 0x059: 0x00
kftmde[0].templ.strpsz:               0 ; 0x05a: 0x00
kftmde[0].templ.priZn:                0 ; 0x05b: 0x00
kftmde[0].templ.secZn:                0 ; 0x05c: 0x00
kftmde[0].templ.ub1spare:             0 ; 0x05d: 0x00
kftmde[0].templ.ub2spare:             0 ; 0x05e: 0x0000
kftmde[0].templ.dXsiz[0]:             0 ; 0x060: 0x00000000
kftmde[0].templ.dXsiz[1]:             0 ; 0x064: 0x00000000
kftmde[0].templ.dXsiz[2]:             0 ; 0x068: 0x00000000
kftmde[0].templ.iXsiz[0]:             0 ; 0x06c: 0x00000000
kftmde[0].templ.iXsiz[1]:             0 ; 0x070: 0x00000000
kftmde[0].templ.iXsiz[2]:             0 ; 0x074: 0x00000000
kftmde[0].templ.entry:                0 ; 0x078: 0x00000000
kftmde[0].templ.idx:                  0 ; 0x07c: 0x00000000
kftmde[0].templ.spare[0]:             0 ; 0x080: 0x00000000
kftmde[0].templ.spare[1]:             0 ; 0x084: 0x00000000
kftmde[0].templ.spare[2]:             0 ; 0x088: 0x00000000
kftmde[0].templ.spare[3]:             0 ; 0x08c: 0x00000000
kftmde[0].templ.spare[4]:             0 ; 0x090: 0x00000000
kftmde[0].templ.spare[5]:             0 ; 0x094: 0x00000000
kftmde[0].templ.spare[6]:             0 ; 0x098: 0x00000000
kftmde[0].templ.spare[7]:             0 ; 0x09c: 0x00000000
kftmde[0].templ.spare[8]:             0 ; 0x0a0: 0x00000000
kftmde[0].templ.spare[9]:             0 ; 0x0a4: 0x00000000
kftmde[0].templ.spare[10]:            0 ; 0x0a8: 0x00000000
kftmde[1].entry.incarn:               0 ; 0x0ac: A=0 NUMM=0x0
kftmde[1].entry.hash:                 0 ; 0x0b0: 0x00000000

 

 

  • KFBTYP_TMPLTDIR    Template directory block
  • kftmde[0].templ.name  Template name
  • kftmde[0].templ.flags Template attribute flags
  • kftmde[0].templ.redun Template redundancy policy
  • kftmde[0].templ.strpwdth  stripe width in extents
  • kftmde[0].templ.strpsz  stripe size in 2^N bytes, 9-20 ok
  • kftmde[0].templ.priZn primary extent allocation zone
  • kftmde[0].templ.secZn secondary extent allocation zone
  • kftmde[0].templ.entry  Entry number index for fix table
  • kftmde[0].templ.idx Compound index for fixed table

【Oracle ASM数据恢复】ERROR: no PST quorum in group 1: required 2, found 0问题解析

首先来了解下PST quorum 是什么意思:

 

Partner and Status Table

 

一般来说aun=1 是保留给Partner and Status Table(PST)的拷贝使用的。 一般5个ASM DISK将包含一份PST拷贝。多数的PST内容必须相同且验证有效。否则无法判断哪些ASM DISK实际拥有相关数据。

在 PST中每一条记录对应Diskgroup中的一个ASM DISK。每一条记录会对一个ASM disk枚举其partners的ASM DISK。同时会有一个flag来表示该DISK是否是ONLINE可读写的。这些信息对recovery是否能做很重要。

PST表的Blkn=0是PST的header,存放了如下的信息:

  • Timestamp to indicate PST is valid
  • Version number to compare with other PST copies
  • List of disks containing PST copies
  • Bit map for shadow paging updates

PST的最后一个块是heartbeat block,当diskgroup mount时其每3秒心跳更新一次。

 

以下为PST header

kfed read /oracleasm/asm-disk01 aun=1 blkn=0 aus=4194304 |less 

kfbh.endian:                          1 ; 0x000: 0x01
kfbh.hard:                          130 ; 0x001: 0x82
kfbh.type:                           17 ; 0x002: KFBTYP_PST_META
kfbh.datfmt:                          2 ; 0x003: 0x02
kfbh.block.blk:                    1024 ; 0x004: blk=1024
kfbh.block.obj:              2147483648 ; 0x008: disk=0
kfbh.check:                  3813974007 ; 0x00c: 0xe3549ff7
kfbh.fcn.base:                        0 ; 0x010: 0x00000000
kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000
kfbh.spare1:                          0 ; 0x018: 0x00000000
kfbh.spare2:                          0 ; 0x01c: 0x00000000
kfdpHdrPairBv1.first.super.time.hi:32999670 ; 0x000: HOUR=0x16 DAYS=0x7 MNTH=0x2 YEAR=0x7de
kfdpHdrPairBv1.first.super.time.lo:1788841984 ; 0x004: USEC=0x0 MSEC=0x3e4 SECS=0x29 MINS=0x1a
kfdpHdrPairBv1.first.super.last:      2 ; 0x008: 0x00000002
kfdpHdrPairBv1.first.super.next:      2 ; 0x00c: 0x00000002
kfdpHdrPairBv1.first.super.copyCnt:   5 ; 0x010: 0x05
kfdpHdrPairBv1.first.super.version:   1 ; 0x011: 0x01
kfdpHdrPairBv1.first.super.ub2spare:  0 ; 0x012: 0x0000
kfdpHdrPairBv1.first.super.incarn:    1 ; 0x014: 0x00000001
kfdpHdrPairBv1.first.super.copy[0]:   0 ; 0x018: 0x0000
kfdpHdrPairBv1.first.super.copy[1]:   1 ; 0x01a: 0x0001
kfdpHdrPairBv1.first.super.copy[2]:   2 ; 0x01c: 0x0002
kfdpHdrPairBv1.first.super.copy[3]:   3 ; 0x01e: 0x0003
kfdpHdrPairBv1.first.super.copy[4]:   4 ; 0x020: 0x0004
kfdpHdrPairBv1.first.super.dtaSz:    15 ; 0x022: 0x000f
kfdpHdrPairBv1.first.asmCompat:186646528 ; 0x024: 0x0b200000
kfdpHdrPairBv1.first.newCopy[0]:      0 ; 0x028: 0x0000
kfdpHdrPairBv1.first.newCopy[1]:      0 ; 0x02a: 0x0000
kfdpHdrPairBv1.first.newCopy[2]:      0 ; 0x02c: 0x0000
kfdpHdrPairBv1.first.newCopy[3]:      0 ; 0x02e: 0x0000
kfdpHdrPairBv1.first.newCopy[4]:      0 ; 0x030: 0x0000
kfdpHdrPairBv1.first.newCopyCnt:      0 ; 0x032: 0x00
kfdpHdrPairBv1.first.contType:        1 ; 0x033: 0x01
kfdpHdrPairBv1.first.spares[0]:       0 ; 0x034: 0x00000000
kfdpHdrPairBv1.first.spares[1]:       0 ; 0x038: 0x00000000
kfdpHdrPairBv1.first.spares[2]:       0 ; 0x03c: 0x00000000
kfdpHdrPairBv1.first.spares[3]:       0 ; 0x040: 0x00000000
kfdpHdrPairBv1.first.spares[4]:       0 ; 0x044: 0x00000000
kfdpHdrPairBv1.first.spares[5]:       0 ; 0x048: 0x00000000
kfdpHdrPairBv1.first.spares[6]:       0 ; 0x04c: 0x00000000
kfdpHdrPairBv1.first.spares[7]:       0 ; 0x050: 0x00000000
kfdpHdrPairBv1.first.spares[8]:       0 ; 0x054: 0x00000000
kfdpHdrPairBv1.first.spares[9]:       0 ; 0x058: 0x00000000
kfdpHdrPairBv1.first.spares[10]:      0 ; 0x05c: 0x00000000
kfdpHdrPairBv1.first.spares[11]:      0 ; 0x060: 0x00000000
kfdpHdrPairBv1.first.spares[12]:      0 ; 0x064: 0x00000000
kfdpHdrPairBv1.first.spares[13]:      0 ; 0x068: 0x00000000
kfdpHdrPairBv1.first.spares[14]:      0 ; 0x06c: 0x00000000
kfdpHdrPairBv1.first.spares[15]:      0 ; 0x070: 0x00000000
kfdpHdrPairBv1.first.spares[16]:      0 ; 0x074: 0x00000000
kfdpHdrPairBv1.first.spares[17]:      0 ; 0x078: 0x00000000
kfdpHdrPairBv1.first.spares[18]:      0 ; 0x07c: 0x00000000
kfdpHdrPairBv1.first.spares[19]:      0 ; 0x080: 0x00000000

 

  • super.time wall clock time of last PST commit
  • super.last  last committed content version number
  • super.next next available content version number
  • super.copyCnt  # of disks holding PST copies
  • super.version   version of PST header format
  • super.ub2spare  pad to ub4 align
  • super.incarn incarnation of <copy> list
  • super.copy[0]  disks holding the PST copies
  • super.dtaSz  data entries in PST
  • newCopy[0]   new disks holding PST copies
  • newCopyCnt  new # disks holding PST copies

 

以下为PST table block:

 

kfed read /oracleasm/asm-disk02 aun=1 blkn=3 aus=4194304 |less 

kfbh.endian:                          1 ; 0x000: 0x01
kfbh.hard:                          130 ; 0x001: 0x82
kfbh.type:                           18 ; 0x002: KFBTYP_PST_DTA
kfbh.datfmt:                          2 ; 0x003: 0x02
kfbh.block.blk:                    1027 ; 0x004: blk=1027
kfbh.block.obj:              2147483649 ; 0x008: disk=1
kfbh.check:                  4204644293 ; 0x00c: 0xfa9dc7c5
kfbh.fcn.base:                        0 ; 0x010: 0x00000000
kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000
kfbh.spare1:                          0 ; 0x018: 0x00000000
kfbh.spare2:                          0 ; 0x01c: 0x00000000
kfdpDtaEv1[0].status:               127 ; 0x000: I=1 V=1 V=1 P=1 P=1 A=1 D=1
kfdpDtaEv1[0].fgNum:                  1 ; 0x002: 0x0001
kfdpDtaEv1[0].addTs:         2022663849 ; 0x004: 0x788f66a9
kfdpDtaEv1[0].partner[0]:         49154 ; 0x008: P=1 P=1 PART=0x2
kfdpDtaEv1[0].partner[1]:         49153 ; 0x00a: P=1 P=1 PART=0x1
kfdpDtaEv1[0].partner[2]:         49155 ; 0x00c: P=1 P=1 PART=0x3
kfdpDtaEv1[0].partner[3]:         49166 ; 0x00e: P=1 P=1 PART=0xe
kfdpDtaEv1[0].partner[4]:         49165 ; 0x010: P=1 P=1 PART=0xd
kfdpDtaEv1[0].partner[5]:         49164 ; 0x012: P=1 P=1 PART=0xc
kfdpDtaEv1[0].partner[6]:         49156 ; 0x014: P=1 P=1 PART=0x4
kfdpDtaEv1[0].partner[7]:         49163 ; 0x016: P=1 P=1 PART=0xb
kfdpDtaEv1[0].partner[8]:         10000 ; 0x018: P=0 P=0 PART=0x2710
kfdpDtaEv1[0].partner[9]:             0 ; 0x01a: P=0 P=0 PART=0x0
kfdpDtaEv1[0].partner[10]:            0 ; 0x01c: P=0 P=0 PART=0x0
kfdpDtaEv1[0].partner[11]:            0 ; 0x01e: P=0 P=0 PART=0x0
kfdpDtaEv1[0].partner[12]:            0 ; 0x020: P=0 P=0 PART=0x0
kfdpDtaEv1[0].partner[13]:            0 ; 0x022: P=0 P=0 PART=0x0
kfdpDtaEv1[0].partner[14]:            0 ; 0x024: P=0 P=0 PART=0x0
kfdpDtaEv1[0].partner[15]:            0 ; 0x026: P=0 P=0 PART=0x0
kfdpDtaEv1[0].partner[16]:            0 ; 0x028: P=0 P=0 PART=0x0
kfdpDtaEv1[0].partner[17]:            0 ; 0x02a: P=0 P=0 PART=0x0
kfdpDtaEv1[0].partner[18]:            0 ; 0x02c: P=0 P=0 PART=0x0
kfdpDtaEv1[0].partner[19]:            0 ; 0x02e: P=0 P=0 PART=0x0
kfdpDtaEv1[1].status:               127 ; 0x030: I=1 V=1 V=1 P=1 P=1 A=1 D=1
kfdpDtaEv1[1].fgNum:                  2 ; 0x032: 0x0002
kfdpDtaEv1[1].addTs:         2022663849 ; 0x034: 0x788f66a9
kfdpDtaEv1[1].partner[0]:         49155 ; 0x038: P=1 P=1 PART=0x3
kfdpDtaEv1[1].partner[1]:         49152 ; 0x03a: P=1 P=1 PART=0x0
kfdpDtaEv1[1].partner[2]:         49154 ; 0x03c: P=1 P=1 PART=0x2
kfdpDtaEv1[1].partner[3]:         49166 ; 0x03e: P=1 P=1 PART=0xe
kfdpDtaEv1[1].partner[4]:         49157 ; 0x040: P=1 P=1 PART=0x5
kfdpDtaEv1[1].partner[5]:         49156 ; 0x042: P=1 P=1 PART=0x4
kfdpDtaEv1[1].partner[6]:         49165 ; 0x044: P=1 P=1 PART=0xd
kfdpDtaEv1[1].partner[7]:         49164 ; 0x046: P=1 P=1 PART=0xc
kfdpDtaEv1[1].partner[8]:         10000 ; 0x048: P=0 P=0 PART=0x2710
kfdpDtaEv1[1].partner[9]:             0 ; 0x04a: P=0 P=0 PART=0x0
kfdpDtaEv1[1].partner[10]:            0 ; 0x04c: P=0 P=0 PART=0x0
kfdpDtaEv1[1].partner[11]:            0 ; 0x04e: P=0 P=0 PART=0x0
kfdpDtaEv1[1].partner[12]:            0 ; 0x050: P=0 P=0 PART=0x0
kfdpDtaEv1[1].partner[13]:            0 ; 0x052: P=0 P=0 PART=0x0
kfdpDtaEv1[1].partner[14]:            0 ; 0x054: P=0 P=0 PART=0x0
kfdpDtaEv1[1].partner[15]:            0 ; 0x056: P=0 P=0 PART=0x0
kfdpDtaEv1[1].partner[16]:            0 ; 0x058: P=0 P=0 PART=0x0

 

 

  • kfdpDtaEv1[0].status: 127 ; 0×000: I=1 V=1 V=1 P=1 P=1 A=1 D=1 disk status
  • fgNum   fail group number
  • addTs   timestamp of the addition to the diskgroup
  • kfdpDtaEv1[0].partner[0]:         49154 ; 0×008: P=1 P=1 PART=0×2  partner list

 

AUN=1 的最后一个block为KFBTYP_HBEAT 心跳表:

 

[oracle@mlab2 hzy]$ kfed read /oracleasm/asm-disk02 aun=1 blkn=1023 aus=4194304 |less  
kfbh.endian:                          1 ; 0x000: 0x01
kfbh.hard:                          130 ; 0x001: 0x82
kfbh.type:                           19 ; 0x002: KFBTYP_HBEAT
kfbh.datfmt:                          2 ; 0x003: 0x02
kfbh.block.blk:                    2047 ; 0x004: blk=2047
kfbh.block.obj:              2147483649 ; 0x008: disk=1
kfbh.check:                  1479766671 ; 0x00c: 0x5833728f
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:              32999734 ; 0x004: HOUR=0x16 DAYS=0x9 MNTH=0x2 YEAR=0x7de
kfdpHbeatB.ts.lo:            3968041984 ; 0x008: USEC=0x0 MSEC=0xe1 SECS=0x8 MINS=0x3b
kfdpHbeatB.rnd[0]:           1065296177 ; 0x00c: 0x3f7f2131
kfdpHbeatB.rnd[1]:            857037208 ; 0x010: 0x33155998
kfdpHbeatB.rnd[2]:           2779184235 ; 0x014: 0xa5a6fc6b
kfdpHbeatB.rnd[3]:           2660793989 ; 0x018: 0x9e987e85

 

 

  • kfdpHbeatB.instance   instance id
  • kfdpHbeatB.ts.hi timestamp
  • kfdpHbeatB.rnd[0]  随机加盐

 

  •  External Redundancy一般有一个PST
  • Normal Redundancy至多有个3个PST
  • High Redundancy 至多有5个PST

 

如下场景中PST 可能被重定位:

  • 存有PST的ASM DISK不可用了(当ASM启东时)
  • ASM DISK OFFLINE了
  • 当对PST的读写发生了I/O错误
  • disk被正常DROP了

 

  •  在读取其他ASM metadata之前会先检查PST
  • 当ASM实例被要求mount diskgroup时,GMON进程会读取diskgroup中所有磁盘去找到和确认PST拷贝
  • 如果他发现有足够的PST,那么会mount diskgroup
  • 之后,PST会被缓存在ASM缓存中,以及GMON的PGA中并使用排他的PT.n.0锁保护
  • 同集群中的其他ASM实例也将缓存PST到GMON的PGA,并使用共享PT.n.o锁保护
  • 仅仅那个持有排他锁的GMON能更新磁盘上的PST信息
  • 每一个ASM DISK上的AUN=1均为PST保留,但只有几个磁盘上真的有PST数据

 

 

如果出现diskgroup 无法mount的错误,且alert.log中出现如下信息,则可能是丢失了必要数量的PST了:

 

Wed Jan 01 21:34:37 IST 2014
SQL> ALTER DISKGROUP ALL MOUNT 
Wed Jan 01 21:34:38 IST 2014
NOTE: cache registered group DATA number=1 incarn=0x1c58c060
Wed Jan 01 21:34:38 IST 2014
ERROR: no PST quorum in group 1: required 2, found 0 >>>>>>>>>>>>>>>>> HERE
Wed Jan 01 21:34:38 IST 2014
NOTE: cache dismounting group 1/0x1C58C060 (DATA) 
NOTE: dbwr not being msg'd to dismount
ERROR: diskgroup DATA was not mounted
Wed Jan 01 22:37:51 IST 2014

 

 

该PST quorum丢失的问题常由以下几个原因导致:

 

  1. ASM DISK丢失
  2. ASM DISK corrupted损坏
  3.  部分ASM DISK的AUN=1 PST部分损坏,或者被数据不完整
  4. 不当的ASM_DISKSTRING参数设置
  5. 不当的ASM DISK权限设置

 

对于该no PST quorum问题的常见对策:

  • 重建diskgroup
  • 手动修复PST(十分复杂)

 

如果自己搞不定可以找ASKMACLEAN专业ORACLE数据库修复团队成员帮您恢复!

 

必要的诊断数据收集如下:

 

1. The complete ASM alertfile (please not only a part). That will help me to understand the history.

2. Have you used multipath devices (e.g. using Linux Device Mapper) as base device for creating
   your asmlib disks ? Or have you just used single path devices ('sd' devices) for your asmlib disks ?

3. Which oracle user's do you have created in the affected environment ?
   Please show all oracle users together them with their groups.

4. Please upload a spoolfile with the output from the next commands commands:

 $> cat /etc/*release
 $> uname -a
 $> rpm -qa |grep oracleasm
 $> df -ha
 $> ls -l /dev/oracleasm/disks/*

 $> /etc/init.d/oracleasm status
 $> /usr/sbin/oracleasm-discover
 $> /usr/sbin/oracleasm-discover 'ORCL:*'

 $> /etc/init.d/oracleasm scandisks
 $> /etc/init.d/oracleasm listdisks
 $> /etc/init.d/oracleasm querydisk 

 $> ls -ltr $ORACLE_HOME/bin/oracle
 $> id -a oracle
 $> cat /etc/group

5. Upload the next files:

=> /var/log/messages
=> /etc/sysconfig/oracleasm
  /etc/sysconfig/oracleasm-_dev_oracleasm

6. Provide a spoolfile with the next 'kfod' output:

$GRID_HOME/bin/kfod asm_diskstring='ORCL:*' disks=all
$GRID_HOME/bin/kfod disks=all
$GRID_HOME/bin/kfod asm_diskstring='/dev/oracleasm/disks/*' disks=all

7. Provide anather spoolfile with the output of the next commands (to run as GRID user):

 $GRID_HOME/crsctl check crs
 $GRID_HOME/crsctl stat res -t
 $GRID_HOME/crsctl stat res -t -init

8. To see the ASM_discovery string both in the ASM instance spfile and in the CRS profile (gpnp)
provide the next informations:

a) Via ASMCMD:

    $ ./asmcmd dsget

b) Via GPNPTOOL:

   $ ./gpnptool get

c) $ cat $ORACLE_HOME/gpnp/*/profiles/peer/profile.xml

 

【Oracle ASM】Continuing Operations Directory (file #4)

《【Oracle ASM】ASM FILE NUMBER 3 Active Change Directory》      中我们介绍而来ACD,但是对于长时间运行的操作则简单的ACD不足以描述其变化。 在一些特殊情况下,Continuing Operations Directory (COD)会分配记录来跟踪大的操作并保证其完成。 如果由于进程失败而导致操作没有彻底完成,则恢复进程将查询该COD记录,并要么完成 要么回滚该操作。

一般有2种持续性的操作,分别为 回滚和后台操作。 后台操作一般由ASM实例的后台进程来实施。 其作为diskgroup维护的一部分来完成,而非特殊要求。一个后台操作持续工作,直到其完成或者实例CRASH。

如果实例CRASH,则恢复实例时将需要重启该后台操作。 rebalance diskgroup即是后台操作的一种。

回滚操作类似于数据库事务。 其由ASM前台进程申请启动。 在此操作过程中diskgroup处于非一致的状态。该操作要么全部完成 ,要么全部回滚。长见由数据库实例来引发这些前台操作。如果数据库实例CRASH,ASM前台进程失败,或者出现一些不可恢复的错误,则该操作将被终止。 创建一个文件将会是一个比较好的例子。如果当创建一个文件时若发生错误,则正为该文件分配的空间需要被释放,部分创建的文件也要被删除。 若数据库实例并未提交该创建,则文件必须被删除。如果ASM实例CRASh了,则该工作需要recover实例时完成。

asm database file creation

 

Continuing Operation Directory (COD) 该metadata file 4 中记录的是在单个metadata block中无法完成的操作记录到COD中,这样当ASM instance crash时可以恢复这些操作。例如创建 删除和resize文件,这其中file number 4 blkn=1为KFBTYP_COD_RB  即回滚rollback数据,后面的数据为KFBTYP_COD_DATA。

 

可回滚的操作opcodes包括:

 

1 - Create a file
2 - Delete a file
3 - Resize a file
4 - Drop alias entry
5 - Rename alias entry
6 - Rebalance space COD
7 - Drop disks force
8 - Attribute drop
9 - Disk Resync
10 - Disk Repair Time
11 - Volume create
12 - Volume delete
13 - Attribute directory creation
14 - Set zone attributes
15 - User drop

 

每次ASM diskgroup 尝试mount时都会读取FILE number 4 COD中的数据来保证操作要么完成、要么回滚。

 

 

SQL> SELECT xnum_kffxp "Extent", au_kffxp "AU", disk_kffxp "Disk" from  x$kffxp
  2    WHERE group_kffxp=1 and number_kffxp=4
  3    and xnum_kffxp <> 2147483648;

    Extent         AU       Disk
---------- ---------- ----------
         0          7          0
         0          3          3
         0          6          4
         1          3         10
         1          2         11
         1          3          6

	SQL> select path,disk_number from v$asm_disk where disk_number=0;

PATH
--------------------------------------------------------------------------------
DISK_NUMBER
-----------

/oracleasm/asm-disk01
          0

 [oracle@mlab2 ~]$  kfed read /oracleasm/asm-disk01 aus=4194304 aun=7 blkn=0|less
kfbh.endian:                          1 ; 0x000: 0x01
kfbh.hard:                          130 ; 0x001: 0x82
kfbh.type:                            9 ; 0x002: KFBTYP_COD_BGO
kfbh.datfmt:                          1 ; 0x003: 0x01
kfbh.block.blk:                       0 ; 0x004: blk=0
kfbh.block.obj:                       4 ; 0x008: file=4
kfbh.check:                    17378383 ; 0x00c: 0x01092c4f
kfbh.fcn.base:                    44618 ; 0x010: 0x0000ae4a
kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000
kfbh.spare1:                          0 ; 0x018: 0x00000000
kfbh.spare2:                          0 ; 0x01c: 0x00000000
kfrcbg.size:                          0 ; 0x000: 0x0000
kfrcbg.op:                            0 ; 0x002: 0x0000
kfrcbg.inum:                          0 ; 0x004: 0x00000000
kfrcbg.iser:                          0 ; 0x008: 0x00000000

kfrcbg.iser:                          0 ; 0x008: 0x00000000
[oracle@mlab2 ~]$ kfed read /oracleasm/asm-disk01 aus=4194304 aun=7 blkn=1|less
kfbh.endian:                          1 ; 0x000: 0x01
kfbh.hard:                          130 ; 0x001: 0x82
kfbh.type:                           15 ; 0x002: KFBTYP_COD_RBO
kfbh.datfmt:                          2 ; 0x003: 0x02
kfbh.block.blk:                       1 ; 0x004: blk=1
kfbh.block.obj:                       4 ; 0x008: file=4
kfbh.check:                    34548815 ; 0x00c: 0x020f2c4f
kfbh.fcn.base:                    44619 ; 0x010: 0x0000ae4b
kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000
kfbh.spare1:                          0 ; 0x018: 0x00000000
kfbh.spare2:                          0 ; 0x01c: 0x00000000
kfrcrb[0].opcode:                     0 ; 0x000: 0x0000
kfrcrb[1].opcode:                     0 ; 0x002: 0x0000
kfrcrb[2].opcode:                     0 ; 0x004: 0x0000
kfrcrb[3].opcode:                     0 ; 0x006: 0x0000
kfrcrb[4].opcode:                     0 ; 0x008: 0x0000
kfrcrb[5].opcode:                     0 ; 0x00a: 0x0000
kfrcrb[6].opcode:                     0 ; 0x00c: 0x0000
kfrcrb[7].opcode:                     0 ; 0x00e: 0x0000
kfrcrb[8].opcode:                     0 ; 0x010: 0x0000
kfrcrb[9].opcode:                     0 ; 0x012: 0x0000
kfrcrb[10].opcode:                    0 ; 0x014: 0x0000
kfrcrb[11].opcode:                    0 ; 0x016: 0x0000
kfrcrb[12].opcode:                    0 ; 0x018: 0x0000
kfrcrb[13].opcode:                    0 ; 0x01a: 0x0000
kfrcrb[14].opcode:                    0 ; 0x01c: 0x0000
kfrcrb[15].opcode:                    0 ; 0x01e: 0x0000
kfrcrb[16].opcode:                    0 ; 0x020: 0x0000
kfrcrb[17].opcode:                    0 ; 0x022: 0x0000
kfrcrb[18].opcode:                    0 ; 0x024: 0x0000
kfrcrb[19].opcode:                    0 ; 0x026: 0x0000
kfrcrb[20].opcode:                    0 ; 0x028: 0x0000
kfrcrb[21].opcode:                    0 ; 0x02a: 0x0000
kfrcrb[22].opcode:                    0 ; 0x02c: 0x0000
kfrcrb[23].opcode:                    0 ; 0x02e: 0x0000
kfrcrb[24].opcode:                    0 ; 0x030: 0x0000
kfrcrb[25].opcode:                    0 ; 0x032: 0x0000
kfrcrb[26].opcode:                    0 ; 0x034: 0x0000
kfrcrb[27].opcode:                    0 ; 0x036: 0x0000
kfrcrb[28].opcode:                    0 ; 0x038: 0x0000
kfrcrb[29].opcode:                    0 ; 0x03a: 0x0000
kfrcrb[30].opcode:                    0 ; 0x03c: 0x0000
kfrcrb[31].opcode:                    0 ; 0x03e: 0x0000
kfrcrb[32].opcode:                    0 ; 0x040: 0x0000
kfrcrb[33].opcode:                    0 ; 0x042: 0x0000
kfrcrb[34].opcode:                    0 ; 0x044: 0x0000
kfrcrb[35].opcode:                    0 ; 0x046: 0x0000
kfrcrb[36].opcode:                    0 ; 0x048: 0x0000
kfrcrb[37].opcode:                    0 ; 0x04a: 0x0000
kfrcrb[38].opcode:                    0 ; 0x04c: 0x0000
kfrcrb[39].opcode:                    0 ; 0x04e: 0x0000
kfrcrb[40].opcode:                    0 ; 0x050: 0x0000
kfrcrb[41].opcode:                    0 ; 0x052: 0x0000
kfrcrb[42].opcode:                    0 ; 0x054: 0x0000
:

[oracle@mlab2 ~]$ kfed read /oracleasm/asm-disk01 aus=4194304 aun=7 blkn=2|less
kfbh.endian:                          1 ; 0x000: 0x01
kfbh.hard:                          130 ; 0x001: 0x82
kfbh.type:                           16 ; 0x002: KFBTYP_COD_DATA
kfbh.datfmt:                          1 ; 0x003: 0x01
kfbh.block.blk:                       2 ; 0x004: blk=2
kfbh.block.obj:                       4 ; 0x008: file=4
kfbh.check:                   856815006 ; 0x00c: 0x3311f59e
kfbh.fcn.base:                    22895 ; 0x010: 0x0000596f
kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000
kfbh.spare1:                          0 ; 0x018: 0x00000000
kfbh.spare2:                          0 ; 0x01c: 0x00000000

 

kfbh.type KFBTYP_COD_BGO

KFBTYP_COD_BGO  COD BackGround Operations block

KFBTYP_COD_RBO  COD RollBack Operations block

KFBTYP_COD_DATA  COD rollback Data block

kfrcbg.op  opcode defined by KFRCBG_OPDEF

kfrcbg.inum  owning instance number

kfrcbg.iser   instance serial number