# DCexa.cfg: Collects Exadata Information # $Id: DCexa.cfg,v 1.14 2015/02/25 10:21:11 RDA Exp $ # ARCS: $Header: /home/cvs/cvs/RDA_8/src/scripting/lib/collect/DB/DCexa.cfg,v 1.14 2015/02/25 10:21:11 RDA Exp $ # # Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved. # # Change history # 20150225 KRA Extend cell detection on X4 machines. ############################################################################### # Collect the Exadata Setup Information ############################################################################### #------------------------------------------------------------------------------ # Module definition #------------------------------------------------------------------------------ col=${B_IN_USE} dsc='Collects Exadata Information' pre=RDA:DCbegin rpt=B_IN_USE use=Access var=not_used # Flow:in_use,B_IN_USE exe=sdcl { "if ?testFile('f','/etc/oracle/cell/network-config/cellip.ora') " var @{AUX.var} = (cond(${PRF.B_TESTS},'in_use','B_IN_USE')) } #------------------------------------------------------------------------------ # Setting definitions #------------------------------------------------------------------------------ [in_use] typ=B dft=true dsc='Is Exadata in use?' nam=B_IN_USE var=chk_profile,ssh_comment [not_used] typ=B dft=false dsc='Is Exadata in use?' nam=B_IN_USE [B_IN_USE] typ=B dft=${AUX.B_SELECTED} dsc='Is Exadata in use?' inp='Do you want RDA to collect Exadata information (Y/N)?' var=true:chk_profile,ssh_comment [chk_profile] typ=B dft=defined(${PRF.T_TYPE}) dsc='Profile based variable exists?' nam=- var=true:get_type,chk_type:\ T_TYPE,chk_type [get_type] typ=T dft=${PRF.T_TYPE} dsc='Collection type' nam=T_TYPE [T_TYPE] typ=M bef='Exadata collection type:' dft='^' dsc='Collection type' err="Enter a number from 1 to ${AUX.N_ITEMS}" inp='Enter the number corresponding to the collection type' itm=['_All_' =>'All diagnostic information',\ '_CellBrownout_' =>'Long brownout due to cell failure',\ '_CellFailure_' =>'Cell failure issue',\ '_FailedDrives_' =>'Failed drives on cell or compute node',\ '_FlashDrives_' =>'Flash drives issue',\ '_IbSwitch_' =>'IB switch issue',\ '_Ilom_' =>'ILOM issue',\ '_Network_' =>'General network issue',\ '_NetworkCabling_' =>'Network cabling issue',\ '_RacInstance_' =>'RAC instance issue',\ '_SickCell_' =>'Sick or underperforming cell'] val=E [chk_type] typ=T dft=${T_TYPE} dsc='Apply the type-related setup' nam=- var=_All_:B_COLLECT_CELL,B_COLLECT_SWITCH,B_INFINICHECK:\ _CellBrownout_:B_COLLECT_CELL:\ _CellFailure_:B_COLLECT_CELL:\ _FailedDrives_:B_COLLECT_CELL:\ _FlashDrives_:B_COLLECT_CELL:\ _IbSwitch_:B_COLLECT_SWITCH:\ _Ilom_:B_COLLECT_CELL,B_COLLECT_NODE:\ _Network_:B_COLLECT_CELL,chk_network_user,B_INFINICHECK:\ _NetworkCabling_:B_COLLECT_CELL,chk_network_user,B_INFINICHECK:\ _RacInstance_:B_COLLECT_CELL:\ _SickCell_:B_COLLECT_CELL [B_COLLECT_CELL] typ=B dft=true dsc='Should we collect cell information?' inp='Do you want RDA to collect cell information (Y/N)?' lvl=6 var=true:T_CELL_LOGIN,T_CELLS,N_CELL_WAIT_PWD,N_ALERT_TAIL,N_MSODL_TAIL,\ N_TRACE_TAIL [T_CELL_LOGIN] typ=T dft=${PRF.T_CELL_LOGIN:'celladmin'} dsc='User to log in as on remote cells' err='Invalid user name' inp='Enter the user to login as on remote cells' ref=defined(isUser(last,true)) val=E [T_CELLS] typ=M bef='Exadata cell list:' col=1 dft='*' dsc='Cell list' itm=[@{T_TMP_ITM_CELLS}] pck=true val=E exe=sdcl { "var @itm = () "if ${T_CELLS/E} "{loop $cel (@{T_CELLS}) " call push(@itm,$cel,$cel) "} "elsif grepFile('/etc/oracle/cell/network-config/cellip.ora',\ " '^cell=\"(.*?)\"','1') "{loop $cel (last) " {loop $val (@cel = split('[:;]',$cel)) " {if hasPassword('host',$val,${T_CELL_LOGIN}) " next push(@itm,$val,$val) " } " call push(@itm,$cel[0],$cel[0]) " } "} "var @{T_TMP_ITM_CELLS/T} = @itm } [N_CELL_WAIT_PWD] typ=N dft=30 dsc='Number of seconds to wait between password prompts for cells' err='The number of seconds must be an integer greater than zero' inp='Enter the number of seconds to wait between password prompts for \ connecting to cells' lvl=6 ref='I]0,[' val=F [N_ALERT_TAIL] typ=N dft=30000 dsc='Default number of lines to be collected from alert.log' err='The number of lines must be an integer greater than zero' inp='Enter the default number of lines to be collected from the alert.log file' lvl=9 ref='I]0,[' val=F [N_MSODL_TAIL] typ=N dft=30000 dsc='Default number of lines to be collected from ms-odl.trc' err='The number of lines must be an integer greater than zero' inp='Enter the default number of lines to be collected from the ms-odl.trc file' lvl=9 ref='I]0,[' val=F [N_TRACE_TAIL] typ=N dft=1000 dsc='Default number of lines to be collected from trace files' err='The number of lines must be an integer greater than zero' inp='Enter the default number of lines to be collected from trace files' lvl=9 ref='I]0,[' val=F [chk_network_user] typ=B dft=${CUR.N_UID} dsc='Check if it is root user' fam=Unix nam=- var=true:network_comment [network_comment] typ=C dsc='Report to execute TLroot to complete the collection' fam=Unix inp="WARNING: Collecting network information requires superuser privileges.\n\n\ When the normal collection is complete, switch to root and execute the \ TLroot tool.\n\ For root, change to the RDA current working directory, then execute the \ command like:\n\ \040\040${RDA.T_SHORT} -vT root\n\ Next, switch back to the previous user to package the results.\n\ Verify you are in the RDA current working directory, then execute the \ command like:\n\ \040\040${RDA.T_SHORT} -vP\n\n\ Hit 'Return' to continue" [B_COLLECT_SWITCH] typ=B dft=true dsc='Should we collect switch information using remote connection?' inp='Do you want RDA to collect switch information using remote \ connection (Y/N)?' lvl=6 var=true:T_SWITCH_LOGIN,N_SWITCH_WAIT_PWD,chk_switch_user [T_SWITCH_LOGIN] typ=T dsc='User to log in as on remote switches' err='Invalid user name' inp='Enter the user to login as on remote switches' ref=defined(isUser(last,true)) val=E [N_SWITCH_WAIT_PWD] typ=N dft=30 dsc='Number of seconds to wait between password prompts for switches' err='The number of seconds must be an integer greater than zero' inp='Enter the number of seconds to wait between password prompts for \ connecting to switches' lvl=6 ref='I]0,[' val=F [chk_switch_user] typ=B dft=${CUR.N_UID} dsc='Check if it is root user' fam=Unix nam=- var=true:switch_comment [switch_comment] typ=C dsc='Report to execute TLroot to complete the collection' fam=Unix inp="WARNING: Collecting switch information requires superuser privileges.\n\n\ When the normal collection is complete, switch to root and execute the \ TLroot tool.\n\ For root, change to the RDA current working directory, then execute the \ command like:\n\ \040\040${RDA.T_SHORT} -vT root\n\ Next, switch back to the previous user to package the results.\n\ Verify you are in the RDA current working directory, then execute the \ command like:\n\ \040\040${RDA.T_SHORT} -vP\n\n\ Hit 'Return' to continue" [B_COLLECT_NODE] typ=B dft=true dsc='Should we collect remote compute node information?' inp='Do you want RDA to collect ILOM information from remote compute nodes \ (Y/N)?' lvl=6 var=true:T_NODES,T_NODE_LOGIN,N_NODE_WAIT_PWD,chk_ilom_user [T_NODES] typ=M bef='Exadata remote compute node list:' col=1 dft='*' dsc='Exadata remote compute node list' itm=[@{T_TMP_ITM_NODES}] pck=true val=E exe=sdcl { "var @itm = () "if ${T_NODES/E} "{loop $nod (@{T_NODES}) " call push(@itm,$nod,$nod) "} "else "{var $crs = undef " run DB:CRSinit(\$crs) " if ?testDir('d',$crs) " {if loadCommand(concat(catCommand($crs = last,'bin',${AS.EXE:'crsctl'}),\ " ' status server')) " {loop $lin (grepLastFile('^NAME=')) " {var $nod = value($lin) " next compare('eq',$nod,${RDA.T_NODE}) " var $nod = join(".",$nod,${RDA.T_DOMAIN}) " call push(@itm,$nod,$nod) " } " } " } "} "var @{T_TMP_ITM_NODES/T} = @itm } [T_NODE_LOGIN] typ=T dft=${PRF.T_NODE_LOGIN} dsc='User to log in as on remote compute nodes' err='Invalid user name' inp='Enter the user to login as on remote compute nodes' ref=defined(isUser(last,true)) val=E [N_NODE_WAIT_PWD] typ=N dft=30 dsc='Number of seconds to wait between password prompts for compute nodes' err='The number of seconds must be an integer greater than zero' inp='Enter the number of seconds to wait between password prompts for \ connecting to compute nodes' lvl=6 ref='I]0,[' val=F [chk_ilom_user] typ=B dft=${CUR.N_UID} dsc='Check if it is root user' fam=Unix nam=- var=true:ilom_comment [ilom_comment] typ=C dsc='Report to execute TLroot to complete the collection' fam=Unix inp="WARNING: Collecting ILOM information requires superuser privileges.\n\n\ When the normal collection is complete, switch to root and execute the \ TLroot tool.\n\ For root, change to the RDA current working directory, then execute the \ command like:\n\ \040\040${RDA.T_SHORT} -vT root\n\ Next, switch back to the previous user to package the results.\n\ Verify you are in the RDA current working directory, then execute the \ command like:\n\ \040\040${RDA.T_SHORT} -vP\n\n\ Hit 'Return' to continue" [B_INFINICHECK] typ=B dft=false dsc='Should we collect information by executing InfiniCheck?' \ # stopwords InfiniCheck hlp='InfiniCheck command evaluates full network maximum throughput and should \ not be run when there is workload running on any system on the InfiniBand \ network. If there is no load running on any portion of the InfiniBand \ network, such as no databases running, then run the InfiniCheck command \ to perform full InfiniBand network configuration, connectivity and \ performance evaluation.' inp='Do you want RDA to collect information by executing InfiniCheck (Y/N)?' lvl=9 [ssh_comment] typ=C dsc='Report to execute ssh manually before RDA' fam=Unix inp="NOTE: Collecting remote information requires ssh connection.\n\n\ Take care that RDA does not perform the first connection to a remote \ host. Run first ssh manually to verify the remote's host finger print \ and to accept connecting to it.\n\n\ Hit 'Return' to continue"