马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
小知识:CentOS已正式加入红帽公司。从事互联网技术的同学,CentOS应该是值得你深入了解学习研究的。
老菜鸟苦战oracleasm
田逸(sery@163.com)fromhttp://b.formyz.org/2011/0726/46.html
运用情况描写
1、硬件
1、办事器:2台dellr610―16G内存、2颗6核xeoncpu、2个146Gsas盘,做了raid1
2、存储:dellMD322024个300G硬盘
3、存储衔接:6GBHBA卡,2个通道都连线了
2、软件
1、体系:64位centos5.5
2、体系内核版本:Linuxrac12.6.18-194.el5#1SMPFriApr214:58:14EDT2010x86_64x86_64x86_64GNU/Linux
3、asm软件:oracleasm-2.6.18-194.el5-2.0.5-1.el5.x86_64.rpm、oracleasm-support-2.1.7-1.el5.x86_64.rpm、oracleasmlib-2.0.4-1.el5.x86_64.rpm
4、数据库软件:linux.x64_11gR2_database_1of2.zip、linux.x64_11gR2_database_2of2.zip
5、集群软件:linux.x64_11gR2_grid.zip
毛病描写
1、毛病前的情形:
1、集群实例正常运转
2、asm能用asmcmd检查目次和文件
3、数据库实例正常
4、监听器正常
5、客户端长途衔接正常
6、多路径拜访正常
7、/dev/oracleasm/disks目次的下的文件全体存在
2、毛病的原由:
1、盘算模仿办事器生效
2、直接重启两个办事器init6
3、毛病景象:
1、两个办事器的asm实例都没有启动胜利
2、两个办事器的oracle实例都没有启动胜利
3、Crs等过程启动几个,但根本上不克不及正常任务
4、手动启动crs,掉败
5、以grid用户手动衔接实例,强迫启动,掉败
毛病根本缘由断定
数据库数据文件、集群软件所需的ocr文件都存储在asm设定的同享存储中,因为集群软件(包含asm实例)启动掉败而终究也招致数据库实例启动掉败。
处置进程
1、定位毛病点:
1、检查体系过程,发明ASM过程没有起来。但有少量grid相干的过程,以下图所示:
2、手动履行/u01/app/grid/bin/crsctlstartcrs掉败
3、检查装备文件目次/dev/mapper,发明同享存储的分区全体存在
[root@rac2~]#ll/dev/mapper/
total0
crw-------1rootroot10,63Jul2400:00control
brw-rw----1rootdisk253,0Jul2400:01mpath13
brw-rw----1rootdisk253,10Jul2400:01mpath13p1
brw-rw----1rootdisk253,11Jul2400:01mpath13p2
brw-rw----1rootdisk253,12Jul2400:01mpath13p3
brw-rw----1rootdisk253,13Jul2400:01mpath13p5
brw-rw----1rootdisk253,14Jul2400:01mpath13p6
brw-rw----1rootdisk253,15Jul2400:01mpath13p7
brw-rw----1rootdisk253,16Jul2400:01mpath13p8
brw-rw----1rootdisk253,1Jul2400:01mpath14
brw-rw----1rootdisk253,3Jul2400:01mpath14p1
brw-rw----1rootdisk253,4Jul2400:01mpath14p2
brw-rw----1rootdisk253,5Jul2400:01mpath14p3
brw-rw----1rootdisk253,6Jul2400:01mpath14p5
brw-rw----1rootdisk253,7Jul2400:01mpath14p6
brw-rw----1rootdisk253,8Jul2400:01mpath14p7
brw-rw----1rootdisk253,9Jul2400:01mpath14p8
brw-rw----1rootdisk253,2Jul2400:01mpath15
4、初步疑惑是asm磁盘组出毛病了,因而履行oracleasmlistdisks,发明输入只要一行,可现实上是10多行的。
[root@rac2~]#oracleasmlistdisks
DATA06
5、履行oracleasmscandisks扫描,再次检查输入磁盘,照样只要一个。查了网上的材料,也有这类情形,他人的经历是多履行几回asm磁盘扫描就出来了,但对我这个情形有效。
6、当我们初始化创立asm磁盘组时,应用敕令oracleasmcreatediskOCR1/dev/mapper/mpath14p1履行胜利后,将在目次/dev/oracleasm/disks目次生成OCR1这个文件,文件名就是asm的磁盘名;创立若干asm磁盘,就会有若干同名文件。进入目次/dev/oracleasm/disks,检查一下,只剩下一个块装备文件DATA06,其他的全体不见了。
[root@rac2~]#ll/dev/oracleasm/disks/
total0
brw-rw----1gridasmadmin8,22Jul2400:01DATA06
与oracleasmlistdisks输入的成果完整分歧,由此可知asm磁盘组与操作体系这个目次有直接的联系关系。这几者的关系可以以下图标识:
如今要做的工作是能不克不及恢复余下的磁盘文件。
2、处置办法
1、先上彀搜刮一下吧,搜出来很多,都是建议用dd清算磁盘,然后再用oracleasmcreatedisk从新创立磁盘组。但我担忧如许做,asm磁盘外面的数据会全体丧失,没敢如许测验考试。
2、打德律风问我本来的同事,他如今转行做dba了。他告知我,看看是否是装备文件的权限成绩,我到办事器上去检查,发明一个机械的/dev/mapper/mpath*的属主是root:disk,而另外一个办事器响应的目次属主倒是grid:oinstall。依照他的建议,我在文件/etc/rc.local写入了行“chownCRgrid:oinstall”,然后重启体系,检查目次确切属主按我的志愿酿成grid:root,但asm磁盘依然不克不及辨认,看来成绩不在这里。
3、在多个QQ群发送新闻,有说权限成绩的,也有建议oracleasmscandisk的。还有的人以为oracleasm办事没有运转起来。还有的人说是裸装备权限成绩,我可是没有应用裸装备啊,翻开文件/etc/sysconfig/rawdevices,没有任何失效的文本行(全体被正文上了),这应诊了没有应用裸装备。
弄了好几天,没得停顿。一天睡在床上,有想起这个成绩,既然/dev/oracleasm/disks有DATA06这个文件,能不克不及手工创立一些呢(即丧失的那些文件),因而又爬起来。但当我手动履行touch/dev/oracleasm/disks/DATA08时,提醒没有权限。看来,只能用mknod之类的敕令才可以在这个目次创立文件。
动机一转,又想:既然DATA06这个文件存在,能够会在某些文件中有记载吧?履行grepDATA06/etc-r全路径搜刮,还真搜到一个文件/etc/blkid/blkid.tab,这个文件的以下:
[root@rac1~]#more/etc/blkid/blkid.tab
<deviceDEVNO="0x0807"TIME="1311517843"LABEL="/u011"UUID="0aa29b92-8132-4749-
b016-5190e1a7bcc6"TYPE="ext3"SEC_TYPE="ext2">/dev/sda7</device>
<deviceDEVNO="0x0806"TIME="1311517843"LABEL="/tmp1"UUID="e6370305-9868-4190-
a256-b9bc84c07b75"TYPE="ext3"SEC_TYPE="ext2">/dev/sda6</device>
<deviceDEVNO="0x0805"TIME="1311517843"LABEL="/usr1"UUID="d54e800b-b1c8-4d0f-
9095-955122dc5ff1"TYPE="ext3"SEC_TYPE="ext2">/dev/sda5</device>
<deviceDEVNO="0x0803"TIME="1311517843"LABEL="/var1"UUID="ee60d33f-0c2b-4e80-
93ff-f442c99f6dcf"TYPE="ext3"SEC_TYPE="ext2">/dev/sda3</device>
<deviceDEVNO="0x0802"TIME="1311517849"TYPE="swap"LABEL="SWAP-sda2">/dev/sda2
</device>
<deviceDEVNO="0x0801"TIME="1311517843"LABEL="/1"UUID="08e3c9b3-3cfe-403c-9cd
8-ff9e007602fd"TYPE="ext3"SEC_TYPE="ext2">/dev/sda1</device>
<deviceDEVNO="0x0000"TIME="1311517849"TYPE="swap">/u01/swapfile</device>
<deviceDEVNO="0xfd10"TIME="1311441535"LABEL=""TYPE="oracleasm">/dev/ma
pper/mpath14p8</device>
<deviceDEVNO="0xfd09"TIME="1311441535"LABEL=""TYPE="oracleasm">/dev/mapper/m
path15p8</device>
<deviceDEVNO="0xfd0e"TIME="1311441535"LABEL="DATA06"TYPE="oracleasm">/dev/ma
pper/mpath14p6</device>
<deviceDEVNO="0xfd0d"TIME="1311441535"LABEL=""TYPE="oracleasm">/dev/mapper/m
path14p5</device>
<deviceDEVNO="0xfd06"TIME="1311441535"LABEL=""TYPE="oracleasm">/dev/mapper/m
path15p5</device>
<deviceDEVNO="0xfd0c"TIME="1311441535"LABEL=""TYPE="oracleasm">/dev/mapper/m
path14p3</device>
<deviceDEVNO="0xfd05"TIME="1311441535"LABEL=""TYPE="oracleasm">/dev/mapper/m
path15p3</device>
<deviceDEVNO="0xfd0b"TIME="1311441535"LABEL=""TYPE="oracleasm">/dev/mapper/m
path14p2</device>
<deviceDEVNO="0xfd04"TIME="1311441535"LABEL=""TYPE="oracleasm">/dev/mapper/m
path15p2</device>
<deviceDEVNO="0xfd0a"TIME="1311441535"LABEL=""TYPE="oracleasm">/dev/mapp
er/mpath14p1</device>
<deviceDEVNO="0xfd03"TIME="1311441535"LABEL=""TYPE="oracleasm">/dev/mapp
er/mpath15p1</device>
<deviceDEVNO="0x0811"TIME="1311441535"LABEL=""TYPE="oracleasm">/dev/sdb1
</device>
<deviceDEVNO="0x0812"TIME="1311441535"LABEL=""TYPE="oracleasm">/dev/sdb2</de
vice>
<deviceDEVNO="0x0813"TIME="1311441535"LABEL=""TYPE="oracleasm">/dev/sdb3</de
vice>
<deviceDEVNO="0x0815"TIME="1311441535"LABEL=""TYPE="oracleasm">/dev/sdb5</de
vice>
<deviceDEVNO="0x0816"TIME="1311441535"LABEL="DATA06"TYPE="oracleasm">/dev/sd
b6</device>
<deviceDEVNO="0x0818"TIME="1311441535"LABEL=""TYPE="oracleasm">/dev/sd
b8</device>
<deviceDEVNO="0x0821"TIME="1311441535"LABEL=""TYPE="oracleasm">/dev/sdc1
</device>
<deviceDEVNO="0x0822"TIME="1311441535"LABEL=""TYPE="oracleasm">/dev/sdc2</de
vice>
<deviceDEVNO="0x0823"TIME="1311441535"LABEL=""TYPE="oracleasm">/dev/sdc3</de
vice>
<deviceDEVNO="0x0825"TIME="1311441535"LABEL=""TYPE="oracleasm">/dev/sdc5</de
vice>
<deviceDEVNO="0x0828"TIME="1311441535"LABEL=""TYPE="oracleasm">/dev/sdc8</de
vice>
<deviceDEVNO="0x0841"TIME="1311441536"LABEL=""TYPE="oracleasm">/dev/sde1
</device>
<deviceDEVNO="0x0842"TIME="1311441536"LABEL=""TYPE="oracleasm">/dev/sde2</de
vice>
<deviceDEVNO="0x0843"TIME="1311441536"LABEL=""TYPE="oracleasm">/dev/sde3</de
vice>
<deviceDEVNO="0x0845"TIME="1311441536"LABEL=""TYPE="oracleasm">/dev/sde5</de
vice>
<deviceDEVNO="0x0846"TIME="1311441536"LABEL="DATA06"TYPE="oracleasm">/dev/sd
e6</device>
<deviceDEVNO="0x0848"TIME="1311441536"LABEL=""TYPE="oracleasm">/dev/sd
e8</device>
<deviceDEVNO="0x0851"TIME="1311441536"LABEL=""TYPE="oracleasm">/dev/sdf1
</device>
<deviceDEVNO="0x0852"TIME="1311441536"LABEL=""TYPE="oracleasm">/dev/sdf2</de
vice>
<deviceDEVNO="0x0853"TIME="1311441536"LABEL=""TYPE="oracleasm">/dev/sdf3</de
vice>
<deviceDEVNO="0x0855"TIME="1311441536"LABEL=""TYPE="oracleasm">/dev/sdf5</de
vice>
<deviceDEVNO="0x0858"TIME="1311441536"LABEL=""TYPE="oracleasm">/dev/sdf8</de
vice>
从输入能看出一些眉目,但凡label为空的,就是asm磁盘丧失的。照这个思绪,我手动在这个文件改了对应的3行,使其label=“DATA08”。DATA08是其时用oracleasmcreatedisk创立出来,预留上去的。由于没稀有据存在这个DATA08磁盘,所以就是损坏了,也可有可无。接着履行oracleasmscandisks;再oracleasmlistdisks照样没有任何变更,看来这招也不灵。最初重启体系,看能否有用,照样一样。后来才知,/etc/blkid/blkid.tab文件的内容是运转blkid后从体系目次/dev下读入数据再主动生成的。
岂非只得从新推到再来一次?不情愿啊!倒不是怕数据丧失,而是担忧下次这个成绩再次产生。
再预备推到重来之前,我再来尝尝创立一个asm磁盘。照样拿没有应用的/dev/mapper/mpath14p8分区来做,横竖做坏了,也没甚么影响。当履行oracleasmcreatediskDATA08/dev/mapper/mpath14p8,没有胜利,其输入为:
Device"/dev/mapper/mpath14p8"isalreadylabeledforASMdisk“”
这个输入给我很好的提醒,它解释了asm磁盘标签是存在的,但其值为空(它原来的值应当是DATA08)。因而我就考虑,能不克不及强迫把它由空值改成本来的值呢?
不晓得怎样改oracleasm磁盘标签,不外这难不倒咱。翻开文件/etc/init.d/oracleasm瞧瞧,乖乖,找到了呢.看上面一段函数:
force_relabel_disk()
{
OLD="$1"
NEW="$2"
echo-n"Renamingdisk"${OLD}"to"${NEW}":"
"${ORACLEASM}"renamedisk-f-v-l"${ORACLE_ASMMANAGER}""${OLD}"
"$2"1>>/var/log/oracleasm2>&1
if_fail"$?""Unabletorenamedisk"${OLD}"see/var/log/oracleasm"
}
白色字体这行,就是强迫性改asm磁盘标签的语法。迫在眉睫,立时履行oracleasmrenamedisk-f/dev/mapper/mpath14p8DATA08,很顺遂停止下去了。如今切换到目次/dev/oracleasm/disks,装备文件DATA08涌现了,心里一阵狂写啊!在另外一个主机上履行oracleasmscandisk,接着履行oracleasmlistdisks,看见DATA08闪烁退场。由此可以估计,只需按之前的标签名,把对应的asm磁盘强迫更名,就应当可以恢复。
先不急于把一切的asm磁盘标签恢复,从ocr地点的磁盘标签做起。本案的ocr用了两个asm磁盘,其称号为OCR1、OCR2(亏得之前装置rac的时刻,做了屏幕录相),履行上面两条敕令:
oracleasmrenamedisk-f/dev/mapper/mpath14p1OCR1
oracleasmrenamedisk-f/dev/mapper/mpath15p1OCR2
胜利履行后,用oracleasmscandisks扫描,检讨目次/dev/oracleasm/disks,文件OCR1、ORC2都存在了;检讨oracleasmlistdisks的输入,确切有OCR1和OCR2.
Ocr恢复了,可以试着启动crs.以root敕令履行crsctlstartcrs,回车后,体系一阵缄默,上个茅厕回来,履行终了前往shell提醒符下。赶忙psauxww|grepCIasm检查过程,asm实例确切起来了.切换到grid用户,履行asmcd,顺遂进入交互形式,ASMCMD>ls输入为:
ASMCMD>ls
DGCRS/
注:DGCRS是由OCR1、OCR2二者归并而成。
再另外一个办事器上,启动crs,asm实例正常运转起来了。
如今,可以宁神的强迫更改余下的asm标签,终了后目次的文件日下:
[root@rac1dev]#ll/dev/oracleasm/disks
total0
brw-rw----1gridoinstall8,18Jul2617:05DATA02
brw-rw----1gridoinstall8,19Jul2617:05DATA03
brw-rw----1gridoinstall8,21Jul2617:05DATA05
brw-rw----1gridoinstall8,22Jul2422:31DATA06
brw-rw----1gridoinstall8,24Jul2617:05DATA08
brw-rw----1gridoinstall8,34Jul2617:05DATA12
brw-rw----1gridoinstall8,35Jul2617:05DATA13
brw-rw----1gridoinstall8,37Jul2617:05DATA15
brw-rw----1gridoinstall253,14Jul2422:41DATA16
brw-rw----1gridoinstall8,40Jul2617:00DATA18
brw-rw----1gridoinstall8,17Jul2617:05OCR1
brw-rw----1gridoinstall8,33Jul2422:32OCR2
确认无误后,接洽相干人员告诉要启动数据库了。再次检讨ORACLE_SID、asm磁盘标签等,深呼吸一下,迟缓地输出/u01/app/grid/bin/srvctlstartdatabase-dDD4QIGOU回车,起身离座喝口同一鲜橙多(估量有塑化剂)。估量数据库启得差不多了,回坐检查,oracle实例全体正常起来。不外有一点不测,就是办事器交流了各自的实例(rac1运转的实例是db4qigou_2、而rac2运转的实例是db4qigou_1);这没关系,封闭各类的实例,在rac1上履行$srvctlstartinstance-dDB4QIGOU-iDB4QIGOU_1-nrac1,rac2上履行srvctlstartinstance-dDB4QIGOU-iDB4QIGOU_2-nrac2就扳过去了。
弥补:oracle官方站点有建议修正/etc/sysconfig/oracleasm文件的扫描次序,但在本例有效。
本文出自“sery”博客,请务必保存此出处http://sery.blog.51cto.com/10037/624008
小知识:Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。 |