Exadata上的手工创建celldisk,griddisk(比如手工增加一个cell节点)

联系:QQ(5163721)

标题:Exadata上的手工创建celldisk,griddisk(比如手工增加一个cell节点)

作者:Lunar©版权所有[文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.]

一个客户,因为现有的一台Exadata要从一个地方搬迁到另一个地方的机房,因此机器中所有部件的IP都需要修改(ILOM,SWITCH,DNS,NTP SERVER,VIP,SCAN,PDU等等)……

这些都可以修改IP的方式完成,也并不复杂。
但是,考虑到机器上以前部署了很多应用(包括SAP的一些东西),本地空间凌乱且空闲不多。
因此,给客户的解决方案:
1,机器不用重刷,只更改相关IP
2,重装RAC(GI和Database)
3,安装Bundle Patch和SAP需要的patch
清理已经的RAC环境很简单,参考我以前写的一个《Linux下手工卸载11.2 RAC(非MOS的deinstall方法)》

类似这种方法,在11.2以前,是常用的,简单干净,O(∩_∩)O哈哈~

顺便也提一下,《AIX环境下11.2 rac的快速卸载脚本

下载环境并重新安装时,发现可用的找不到ASM盘,客户想起来清理环境的时候忘记先删除ASM磁盘了。

这里我们说下,ASM中,如果不指定asm_diskgroups和asm_diskstring(比如现在,我们重新安装),那么ASM在不同平台会按照缺省路径来扫描磁盘。
具体请参考:Default Disk Discovery Path by Platform (Doc ID 1389618.1)
缺省平台的扫描路径:
Operating System Default Search String

 =======================================
 Solaris (32/64 bit) /dev/rdsk/*
 Windows NT/XP \\.\orcldisk*
 Linux (32/64 bit) /dev/raw/*

 

LINUX (ASMLIB) ORCL:*
 LINUX (ASMLIB) /dev/oracleasm/disks/* ( as a workaround )

 

HPUX /dev/rdsk/*
 HP-UX(Tru 64) /dev/rdisk/*
 AIX /dev/rhdisk*

那么Exadata呢,我猜它的缺省路径是o/cell_ip/* 。
例如,我这里是Exadata的VM,asm_diskgroups和asm_diskstring都为空,ASM启动没有问题,因为他按照缺省路径已经扫描到了需要的磁盘组和磁盘信息:

 


SQL> show parameter asm

NAME TYPE VALUE
 ------------------------------------ ----------- ------------------------------
 asm_diskgroups string
 asm_diskstring string
 asm_power_limit integer 1
 asm_preferred_read_failure_groups string
 SQL>
 SQL>select g.inst_id, g.number_kfgrp, g.name_kfgrp,g.state_kfgrp from x$kfgrp g;

INST_ID NUMBER_KFGRP NAME_KFGRP STATE_KFGRP
 ---------- ------------ ------------------------------ -----------
 1 0 0
 1 1 DATA 5
 1 0 ASMDATA 2
 SQL>

下面的图,更加清晰,所有盘都不在Candidate Disk中,也就是以前划分的cell上griddisk都不可用:

1

因为没有清理磁盘头,这些盘被ASMB进程扫描到了,也就是以前我们常说,11.2开始,重装RAC后,ASM和数据库都可以手工保留以前的状态,如果以前数据库和ASM是完好的,那么重装完成后,ASMB进程将信息注册到CSS中,数据库直接识别到ASM磁盘,因此,直接手工启动数据库就可以(如果要crs启动,那么必须使用crsctl命令将asm和db都注册到crs中): 3

2

现在,我们需要手工的删除griddisk,celldisk等等,然后手工创建这些盘……

我们都知道Exadata上使用onecommand来创建celldisk和griddisk的时候,是按照磁盘效率分布不同的数据的,比如数据库文件需要较高的访问效率,而用来存放归档和备份的磁盘组则需要不那么高的访问效率,这些是通过创建cell的时候指定offsize来实现的。

你可以手工写命令,当然,我这里讨巧了,直接借用了onecommand中其中一个步骤“CreateGridDisks”,我这个image是11.2.2.4.x,因此我需要执行setp 19:

[root@dm01db01 onecommand]# ./deploy112.sh -l

INFO: Logging all actions in /opt/oracle.SupportTools/onecommand/tmp/dm01db01-20140312105540.log and traces in /opt/oracle.SupportTools/onecommand/tmp/dm01db01-20140312105540.trc
INFO: Loading configuration file /opt/oracle.SupportTools/onecommand/onecommand.params…
The steps in order are…
Step 0 = ValidateEnv
Step 1 = CreateWorkDir
Step 2 = UnzipFiles
Step 3 = setupSSHroot
Step 4 = UpdateEtcHosts
Step 5 = CreateCellipinitora
Step 6 = ValidateIB
Step 7 = ValidateCell
Step 8 = PingRdsCheck
Step 9 = RunCalibrate
Step 10 = CreateUsers
Step 11 = SetupSSHusers
Step 12 = CreateGridDisks
Step 13 = GridSwInstall
Step 14 = PatchGridHome
Step 15 = RelinkRDSGI
Step 16 = GridRootScripts
Step 17 = DbSwInstall
Step 18 = PatchDBHomes
Step 19 = CreateASMDiskgroups
Step 20 = DbcaDB
Step 21 = DoUnlock
Step 22 = RelinkRDSDb
Step 23 = LockUpGI
Step 24 = SetupCellEmailAlerts
Step 25 = ApplySecurityFixes
Step 26 = ResecureMachine
[root@dm01db01 onecommand]#

这个步骤大致做了如下几件事情:

1,重启cell的所有服务

2,删除现有所有的celldisk和flashdisk等:
drop flashcache
drop celldisk ALL HARDDISK force
drop celldisk ALL FLASHDISK force

3,如果有需要可以根据更改cell的名称:
alter cell name=dm01cel01
(我这次没这个需求)

4,重新创建所有的celldisk和flashcache:
create celldisk all
create flashcache all

5,create griddisk ALL HARDDISK prefix=testgd,size=528.6875G”
这里面就是创建了一个Griddisk前缀为testgd,大小是528G。请注意,最先创建的这块空间是位于磁盘效率最高点部分(忘记了是最内侧还是最外侧了,O(∩_∩)O哈哈~)
这个testgd只划分了528G,HP盘每块是600G,于是还剩下29G,借着把这29G用于创建DBFS griddisk,当然,如果你不需要这个磁盘组,可以不要这部分。

6,创建DBFS使用的griddisk(由于DBFS使用的是余下的空间,因此通常DBFS griddisk是创建在磁盘的最外侧,也就是效率较低的位置):
create griddisk DBFS_DG_CD_02_dm01cel01 celldisk=CD_02_dm01cel01,size=29.125G”
create griddisk DBFS_DG_CD_03_dm01cel01 celldisk=CD_03_dm01cel01,size=29.125G”
create griddisk DBFS_DG_CD_04_dm01cel01 celldisk=CD_04_dm01cel01,size=29.125G”
create griddisk DBFS_DG_CD_05_dm01cel01 celldisk=CD_05_dm01cel01,size=29.125G”
create griddisk DBFS_DG_CD_06_dm01cel01 celldisk=CD_06_dm01cel01,size=29.125G”
create griddisk DBFS_DG_CD_07_dm01cel01 celldisk=CD_07_dm01cel01,size=29.125G”
create griddisk DBFS_DG_CD_08_dm01cel01 celldisk=CD_08_dm01cel01,size=29.125G”
create griddisk DBFS_DG_CD_09_dm01cel01 celldisk=CD_09_dm01cel01,size=29.125G”
create griddisk DBFS_DG_CD_10_dm01cel01 celldisk=CD_10_dm01cel01,size=29.125G”
create griddisk DBFS_DG_CD_11_dm01cel01 celldisk=CD_11_dm01cel01,size=29.125G”

7,删除了testdg,把空间释放出来给后面的DATA griddisk和RECO griddisk:
drop griddisk ALL prefix=testgd force

8,将DATA griddisk和REDO griddisk创建在以前testdg使用的空间上,这样就保证了DATA_DM01使用了磁盘中最高效的位置:
create griddisk ALL HARDDISK prefix=DATA_DM01, size=451G
create griddisk ALL HARDDISK prefix=RECO_DM01

如果是Exadata上全部cell都要重新化盘,类似我今天遇到的情况,那么直接run onecommand脚本就好,不用这么费劲。

如果是只有其中1个cell或者几个cell要做,那么直接将新的节点刷机到跟其他cell匹配的image版本,然后,创建用户,配置互信等等,最后,可以修改上述脚本完成celldisk和griddisk等的创建,以适应你自己的环境,也很方便的。

创建完成后,顺利安装完成,接下来就是apply patch了,O(∩_∩)O哈哈~

此条目发表在 安装和升级, 日常运维 分类目录,贴了 , , , , , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>