Exadata的配置工具——onecommand

http://www.dbaleet.org/exadata_configuration_tools_onecommand/

 

最早Exadata安装部署过程十分繁琐,几乎所有的步骤都需要手工完成。对于非Oracle Database和Linux的专家,几乎是不可能完成的,当时除了X team的几个成员以外,其它人很少能够在一周以内完成一台Exadata的安装。从V2开始(我也不是太确定),Oracle引入了一个新的工具叫onecommand,从它的名字就可以看出,这个工具用于简化Exadata安装的流程,提供傻瓜化的安装过程,一条命令就可以搞定。

而onecommand本身的历史却更早,这个项目的雏形是Oracle的一些员工旨在方便大规模部署Oracle RAC减少重复劳动而编写的一个工具,用户只要提前填写好一个配置文件,就可以通过一个脚本在30分钟以内安装完成GI的安装,在网上可以找到一些ppt:

One Command Install How to Install the Grid in 30 minutes
Lessons from the RAC Pack: How to install Grid in 30 Minutes

 

但是每几个人见过这个onecommand的真容,也无法找到这个用于RAC安装的onecommand版本。看完上面这两个ppt,就会发现Exadata上的onecommand实际就是由用于安装grid的onecommand发展演化起来的。

到了Exadata时代,onecommand也是一直在不停的演化。这两年来onecommand的版本的一直在变化。从早期的33步发展到现在的28步,从仅仅支持V2版本到支持几乎所有的Exadata版本(包括最新的X3), 从单纯支持Linux,到支持Solaris(X86,SPARC), 从早期的纯shell脚本到采用perl完全重写(为了保持兼容调用的接口还是使用shell,但是核心功能都是perl来实现的),当然这些仅仅只是冰山一角。可以这么说正是onecommand使得Exadata真正实现了安装傻瓜化,标准化,个性化。

 

将dbm configurator生成的内容全部拷贝到onecommand目录下,就可以开始使用它了。onecommand中的command指的实际上是deploy112.sh这个脚本。deploy112.sh默认安装的数据库版本是11.2.0.2, 如果要安装11.2.0.3则需要运行deploy11203.sh这个脚本。运行deploy11203.sh -h查看帮助, 可以看到这个命令有三个选项:

 

-l 列出所有的安装步骤
-s <step #> 运行具体安装步骤
-r <num-num> 如果没有报错的话,连续运行安装步骤。

 # ./deploy11203.sh -l
INFO: Logging all actions in /opt/oracle.SupportTools/onecommand/tmp/dm01db01-20121122114444.log and traces in /opt/oracle.SupportTools/onecommand/tmp/dm01db01-20121122114444.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 = ApplySecurityFixes
Step 25 = setupASR
Step 26 = SetupCellEmailAlerts
Step 27 = ResecureMachine

 

 

这些步骤基本都是见名知意,以下是非官方简单的注解,如果您需要知道这些步骤到底做了哪些事情,请参看当前onecommand下temp文件夹中以STEP开头的日志及trc文件,还有查看其对应生成的shell和sql脚本。当然onecommand实际是一个黑盒,你不可能了解到所有的细节。

 

 

Step 0 = ValidateEnv --验证配置文件,做网络配置进行检查;
Step 1 = CreateWorkDir--创建当前工作的目录;
Step 2 = UnzipFiles --解压安装介质,opatch和所需的Bundle,这些patch在 ;REQUIRED_DOWNLOADS文件内可以找到;
Step 3 = setupSSHroot --建立所有节点root用户的信任关系,完成以后会获取其它节点的时间;
Step 4 = UpdateEtcHosts --更新所有节点的/etc/hosts文件;
Step 5 = CreateCellipinitora --在DB节点创建cellip.ora和cellinit.ora文件;
Step 6 = ValidateIB --调用verify-topology, infinicheck等验证infiniband交换机是否配置正确;
Step 7 = ValidateCell --验证cell节点是否正常,然后验证cell上的LUN以及Physical disk是否正常;
Step 8 = PingRdsCheck --使用rds-ping对私网进行连通性测试;
Step 9 = RunCalibrate --在Cell节点调用 cellcli -e calibrate force对cell上的磁盘和闪盘进行I/O性能测试;
Step 10 = CreateUsers --在DB节点创建必需的用户grid和oracle,并修改对应的属组和权限;
Step 11 = SetupSSHusers --在DB节点建立grid用户和oracle用户的用户等效性;
Step 12 = CreateGridDisks --在Cell节点创建celldisk、griddisk和flashcache;
Step 13 = GridSwInstall --在所有DB节点安装GI的二进制文件;
Step 14 = PatchGridHome --对上一步安装的GI的patchset安装BP。
Step 15 = RelinkRDSGI --对GI进行relink,添加RDS协议支持;
Step 16 = GridRootScripts --在DB节点运行root.sh
Step 17 = DbSwInstall --在所有DB节点安装RDBMS的二进制文件;
Step 18 = PatchDBHomes --对上一步安装的RDBMS的patchset安装BP;
Step 19 = CreateASMDiskgroups --创建DATA,RECO, DBFS三个ASM磁盘组;
Step 20 = DbcaDB --使用DBCA建库
Step 21 = DoUnlock --Unlock GI, 设置hugepages, 修改内核参数更新sysctl.conf等
Step 22 = RelinkRDSDb --对DB进行relink,添加RDS协议支持;
Step 23 = LockUpGI --Lock GI;
Step 24 = ApplySecurityFixes --对数据库进行加固,并对crs的二进制文件修改部分权限;
Step 25 = setupASR --设置ASR;
Step 26 = SetupCellEmailAlerts --设置邮件告警;
Step 27 = ResecureMachine --对一体机进行安全加固;

所以, 理论上你可以使用

./deploy11203.sh -r 0-27

这一条命令完成所有的安装。如果没有报错,将一次性运行0-27所有的步骤。如果你自信心爆棚,并且执行完这条命令后真正安装完了一台Exadata, 建议您去买彩票了,肯定会中头奖。通常更常规的做法是运行:

./deploy11203.sh -s 0
......
./deploy11203.sh -s 27

一步步运行,同时查看安装日志,如果出现问题,再查找出原因,逐步排除解决。onecommand只是个传说。

需要提醒的是最后一个步骤安全加固通常不建议运行。这个步骤除了研发以外,没有人知道它确切做了些什么,并且现在也没有官方的回退方法。我所知道的包括操作系统密码策略的修改, ssh的连通性移除,shell登录超时的设置,以及大量PAM模块的修改。这个会给管理上带来诸多不变。如果您的Exadata不连接到外网,最好不要运行这个步骤。

最后,deploy112.sh脚本还有一个internal的选项,目前从任何文档都无法找到:这些步骤有些见名知意,有的则比较隐晦,其中有的是用来做某些步骤的回退或者清理工作,有的则是设置某些额外的功能,有的是进行某些验证或者测试工作,请读者自己去研究。

# ./deploy11203.sh -a -l 
INFO: Logging all actions in /opt/oracle.SupportTools/onecommand/tmp/dm01db01-20121122115005.log and traces in /opt/oracle.SupportTools/onecommand/tmp/dm01db01-20121122115005.trc
INFO: Loading configuration file /opt/oracle.SupportTools/onecommand/onecommand.params...
The steps in order are...
Step 0 = CleanworkTmp
Step 1 = DropUsersGroups
Step 2 = CreateUsers
Step 3 = ValidateGridDiskSizes
Step 4 = CreateOCRVoteGD
Step 5 = TestGetErrNode
Step 6 = DeinstallGI
Step 7 = DropCellDisk
Step 8 = DropUsersGroups
Step 9 = CheckCssd
Step 10 = testfn
Step 11 = FixAsmAudit
Step 12 = DropExpCellDisk
Step 13 = testHash
Step 14 = DeconfigGI
Step 15 = GetVIPInterface
Step 16 = DeleteDB
Step 17 = ApplyBP3
Step 18 = CopyCrspatchpm
Step 19 = SetupMultipath
Step 20 = RemovePartitions
Step 21 = SetupPartitions
Step 22 = ResetMultipath
Step 23 = DoT4Copy
Step 24 = DoAlltest
Step 25 = ApplyBPtoGridHome
Step 26 = Apply112CRSBPToRDBMS
Step 27 = RelinkRDSGI
Step 28 = RunConfigAssistV2
Step 29 = NewCreateCellCommands
Step 30 = GetPrivIpArray
Step 31 = SetASMDefaults
Step 32 = GetVIPInterface
Step 33 = Mychknode
Step 34 = UpdateOPatch
Step 35 = GetGroupHash
Step 36 = HugePages
Step 37 = ResetPermissions
Step 38 = CreateGroups
Step 39 = FixCcompiler
Step 40 = CollectLogFiles
Step 41 = OcrVoteRelocate
Step 42 = OcrVoteRelocate
Step 43 = FixOSWonCells
Step 44 = Dbcanew
Step 45 = testgetcl
Step 46 = setupASR
Step 47 = CrossCheckCellConf
Step 48 = wipeFlashDisks
Step 49 = SetupCoreControl
Step 50 = dropExtraCellDisks
Step 51 = CreateCellCommands

在博客中无法提供onecommand的更多细节的描述,您可以给我发邮件[email protected]或者与QQ联系 358072394共同探讨。

以上


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *