在Oracle 10.2.0.5之前,ASM磁盘的头块并没有自己的备份,因此一旦头块损坏,如果没有以前kfed read备份出来的信息,也就没有办法使用kfed merge来作头块恢复,特别是如果一个磁盘组中所有的磁盘头块都出现问题(比如被人为地创建了PV),恢复ASM磁盘头块的操作就会非常麻烦。 但是从Oracle 10.2.0.5之后,ASM磁盘的头块会自动备份在另外一个块中,这实际上是Oracle 11g出现的功能,不过经过测试,在Oracle 10.2.0.5版本中,这个备份也是存在的。 正是因为存在这个备份,所以Oracle 10.2.0.5之后的kfed程序才有了新的repair命令,该命令将备份块直接覆盖到磁盘头块,完成修复工作。 在Oracle 10.2.0.4中,如果尝试执行kfed repair,则会报错说命令行参数不正确,此报错说明并不存在repair命令: $ kfed repair KFED-00101: LRM error [102] while parsing command line arguments 但是在Oracle 10.2.0.5中,执行kfed repair,则会说无法打开文件空,而这正说明repair命令是存在的,报错是因为还需要明确指定要修复哪块磁盘: $ kfed repair KFED-00303: unable to open file ” 那么这个备份块具体存在哪里呢?在Solaris下的测试,我们使用truss来进行跟踪。 $ truss -o tracedisk2.out kfed repair /asmdisks/vdisk2 在trace文件中,找到下面这段,可以明确地看到kfed程序从第510个块中读出4096字节,然后再写回到第0个块中。 stat(“/asmdisks/vdisk2”, 0xFFFFFD7FFFDFDB20) = 0 open(“/asmdisks/vdisk2”, O_RDWR) = 7 lseek(7,…
Tag: ASM
How to use asmca to create ASM instance silently in Oracle 11gR2
对于只能登录字符界面的很多服务器而言,能够使用silent模式创建一些组件是至关重要的。本文介绍如何在字符界面下使用asmca来创建ASM实例。 测试环境:Oracle 11.2.0.3 + Oracle Restart 【关于Oracle Restat,可以参看我之前的文章-How to Use Oracle Restart in Oracle 11gR2】 在没有创建ASM实例之前,Clusterware中的资源状况如下: grid@solaris:~$ ct ——————————————————————————– NAME TARGET STATE SERVER STATE_DETAILS ——————————————————————————– Local Resources ——————————————————————————– ora.LISTENER_SOLARIS.lsnr ONLINE ONLINE solaris ora.ons OFFLINE OFFLINE solaris ——————————————————————————– Cluster Resources ——————————————————————————– ora.cssd 1 OFFLINE OFFLINE ora.diskmon 1 OFFLINE OFFLINE ora.evmd 1 ONLINE ONLINE solaris ora.orcl.db 1…
How to use udev for Oracle ASM in Oracle Linux 6
大部分在网上可以找到的文档都是在RHEL5或者OEL5中设置udev,udev对于Linux而言最大的作用是防止操作系统重新启动以后,作为ASM磁盘使用的盘符发生变化。 比如说Tim Hall的文章:UDEV SCSI Rules Configuration for ASM in Oracle Linux 5。 比如说Maclean的文章:利用UDEV服务解决RAC ASM存储设备名。 但是在OEL6或者RHEL6中,这一切都有所变化。 主要的变化是: 1. scsi_id的命令语法发生了变化,scsi_id -g -u -s这样的命令不再有效。 2. udevtest命令已经没有了,整合到了udevadm中。 可以参考Redhat的官方文档(这个文档中本身有一些错误,在udev rules中漏了–device=,正确的方法参看下面的第3步): Configuring persistent storage in Red Hat Enterprise Linux 6。 步骤如下: 1. 编辑/etc/scsi_id.config文件,如果该文件不存在,则创建该文件,添加如下行: options=–whitelisted –replace-whitespace 备注:在我的测试中,此步骤可以省略。 2. 获取需要绑定为ASM Disk的磁盘uuid,比如我们要使用/dev/sdc和/dev/sdd作为ASM磁盘,那么: # scsi_id –whitelisted –replace-whitespace –device=/dev/sdc 1ATA_VBOX_HARDDISK_VB36a9e548-1838194a # scsi_id –whitelisted –replace-whitespace –device=/dev/sdd 1ATA_VBOX_HARDDISK_VB9808fc7f-cdf35030…