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的更多细节的描述,您可以给我发邮件stevenlee.net@gmail.com或者与QQ联系 358072394共同探讨。
以上
Comment