# TGdb.cfg: Manages Database Target Definitions # # $Id: TGdb.cfg,v 1.5 2013/11/20 11:57:13 RDA Exp $ # ARCS: $Header: /home/cvs/cvs/RDA_8/src/scripting/lib/collect/RDA/TGdb.cfg,v 1.5 2013/11/20 11:57:13 RDA Exp $ # # Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved. # # Change History # 20131120 MSC Improve description. #------------------------------------------------------------------------------ # Module definition #------------------------------------------------------------------------------ dsc='Manages Database Target Definitions' var=select_command exe=sdcl { "macro is_unique "{var ($cur,$ttl) = @arg " " loop $itm ($[COL]->get_items('DB')) " {if and(compare('eq',$ttl,$itm->get_first('T_TITLE')),\ " compare('ne',$cur,$itm->get_path)) " return false " } " return true "} } #------------------------------------------------------------------------------ # Setting definitions #------------------------------------------------------------------------------ [select_command] typ=T dft=${W_ADMIN_COMMAND} dsc='Select the administration action' nam=- var=define:do_define:\ edit: do_edit:\ select:do_select #------------------------------------------------------------------------------ # Define a database target #------------------------------------------------------------------------------ [do_define] typ=B dft=${T_ADMIN_VALUE} nam=- var=true:W_CLASS,B_DEDICATED,T_ORACLE_SID,T_TITLE,no_dialog,B_PFILE_LOCAL exe=sdcl { "var $cnt = undef } [W_CLASS] typ=T def=${T_ADMIN_VALUE} dft='DB' dsc='Target type' [B_DEDICATED] typ=B def=${T_ADMIN_VALUE} dft=${RUN.CLASS.DB.B_DEDICATED} dsc='Is it a dedicated target?' opt=true [T_ORACLE_SID] typ=T def=${T_ADMIN_VALUE} dft=${RUN.CLASS.DB.T_ORACLE_SID:${ENV.ORACLE_SID}} dsc='Oracle SID' inp='Enter the Oracle SID to be analyzed' [T_TITLE] typ=T def=${T_ADMIN_VALUE} dft=${RUN.CLASS.DB.T_TITLE:"Database ${T_ORACLE_SID}"} dsc='Database target description' err='Duplicate description' inp='Enter the database target description' ref=is_unique(${CUR.K_MODULE},last) val=E [no_dialog] typ=B def=${T_ADMIN_VALUE} dft=${CUR.B_NO_DIALOG} dsc="Are the dialogues suppressed?" nam=- var=true:set_targets:\ I_ORACLE_HOME,B_MISSING_BASE [set_targets] typ=B def=${T_ADMIN_VALUE} dsc='Define the Oracle base and home targets' nam=- exe=sdcl { "# Define the Oracle home target "if ?${I_ORACLE_HOME} " var ${I_ORACLE_HOME:'Oracle home'} = last "elsif nvl(${RUN.CLASS.OH.T_ORACLE_HOME},\ ${T_ORACLE_HOME}) " var ${I_ORACLE_HOME:'Oracle home'} = \ " nvl(findItem('OH','T_ORACLE_HOME',last),\ " defineTarget('OH',{D_ORACLE_HOME=>last,\ T_ORACLE_HOME=>last})) "elsif nvl(${RUN.CLASS.OH.D_ORACLE_HOME},\ ${D_ORACLE_HOME}) " var ${I_ORACLE_HOME:'Oracle home'} = \ " nvl(findItem('OH','D_ORACLE_HOME',last),\ " defineTarget('OH',{D_ORACLE_HOME=>last,\ T_ORACLE_HOME=>last})) "elsif ${I_ORACLE_HOME/M} "{if ?${ENV.ORACLE_HOME} " {var $hom = getNativePath(last) " var ${I_ORACLE_HOME:'Oracle home'} = \ " nvl(findItem('OH','D_ORACLE_HOME',$hom),\ " defineTarget('OH',{D_ORACLE_HOME=>$hom,\ T_ORACLE_HOME=>$hom})) " } "} "call ${RUN.CLASS.OH/I}->clear " "# Define the Oracle base target "if !${B_MISSING_BASE:${RUN.CLASS.DB.B_MISSING_BASE}} "{if ?${I_ORACLE_BASE} " var ${I_ORACLE_BASE:'Oracle base'} = last " elsif ?nvl(${RUN.CLASS.OB.D_ORACLE_BASE},\ ${D_ORACLE_BASE}) " var ${I_ORACLE_BASE:'Oracle base'} = \ " nvl(findItem('OB','D_ORACLE_BASE',last),\ " defineTarget('OB',{D_ORACLE_BASE=>last})) "} "call ${RUN.CLASS.OB/I}->clear } [I_ORACLE_HOME] typ=I bef="Select the Oracle home for '${T_TITLE}'" cls='OH' def=${T_ADMIN_VALUE} dft=${RUN.CLASS.DB.I_ORACLE_HOME} dsc='Oracle home' [B_MISSING_BASE] typ=B alt=skip_base def=${T_ADMIN_VALUE} dft=${RUN.CLASS.DB.B_MISSING_BASE} dsc="Is the Oracle base missing?" lvl=9 inp="Is the Oracle base missing (Y/N)?" opt=true var=false:skip_base [skip_base] typ=B def=${T_ADMIN_VALUE} dft=and(${I_ORACLE_BASE/M},\ ${RUN.CLASS.DB.I_ORACLE_BASE/M},\ ${RUN.CLASS.OB.D_ORACLE_BASE/M},\ ${CUR.B_NO_DIALOG}) dsc="Should RDA skip the Oracle base target definition?" nam=- var=false:I_ORACLE_BASE [I_ORACLE_BASE] typ=I bef="Select the Oracle base for '${T_TITLE}'" cls='OB' def=${T_ADMIN_VALUE} dft=${RUN.CLASS.DB.I_ORACLE_BASE} dsc='Oracle base' exe=sdcl { "if ${RUN.CLASS.OB.D_ORACLE_HOME/M} " var ${RUN.CLASS.OB.D_ORACLE_HOME} = ${D_ORACLE_HOME/P} } [B_PFILE_LOCAL] typ=B def=${T_ADMIN_VALUE} dft=${RUN.CLASS.DB.B_PFILE_LOCAL:${B_LOCAL}} dsc='Is the PFILE local?' inp='Is the INIT.ORA for the database to be analyzed located on this machine? \ (Y/N)' var=true:F_PFILE_LOCATION [F_PFILE_LOCATION] typ=F def=${T_ADMIN_VALUE} dft=${RUN.CLASS.DB.F_PFILE_LOCATION} dsc='SPFILE/PFILE location' err='Warning: The specified file does not -yet- exist' inp='Enter the location of the spfile or the INIT.ORA (including the directory \ and file name)' # stopwords spfile val=W exe=sdcl { "if isVms() " return "if ?${D_ORACLE_HOME/P} "{var $dir = catDir(last,cond(isUnix(),'dbs','database')) " if grepDir($dir,"^\Qspfile${T_ORACLE_SID}.ora\E$",'fip') " var (${AUX.dft}) = last " elsif grepDir($dir,"^\Qinit${T_ORACLE_SID}.ora\E$",'fip') " var (${AUX.dft}) = last "} } #------------------------------------------------------------------------------ # Edit a database target #------------------------------------------------------------------------------ [do_edit] typ=M add=('R|Return to the previous menu|-|-') aft='\040' bef='Edit a database target:' cas=false dft=(@{T_ADMIN_VALUE}) dsc='Edit a database' err='Invalid entry' inp='Enter the item number or the action letter.' nam=-T_ADMIN_VALUE val=E var=-::do_define exe=sdcl { "# Get the target list "if !?$cnt "{keep $cnt,@itm,@rsp " var ($cnt,@itm,@mnu,@rsp) = (0) " loop $itm ($[COL]->get_items('DB')) " {var $pth = concat('COL/',$itm->get_path) " call push(@itm,incr($cnt),$itm->get_first('T_TITLE',$pth)) " call push(@rsp,$cnt,$pth) " } "} " "# Determine the menu items and responses "var ${AUX.itm} = [@itm] "var ${AUX.rsp} = [@rsp] } #------------------------------------------------------------------------------ # Select a database target #------------------------------------------------------------------------------ [do_select] typ=M aft='\040' alt=add_target,do_define,do_select ask=true cas=false dft=(@{T_ADMIN_VALUE}) dsc='Select a database' nam=-T_ADMIN_VALUE val=E var=+:add_target,do_define,do_select:\ -:do_edit,do_select:\ *:all_targets:\ .:no_targets exe=sdcl { "# Get the target list "if !?$cnt "{keep $cnt,@add,@all,@itm,@mnu,@rsp " " var ($cnt,@all,@itm,@rsp) = (0) " if ${B_ADMIN_END} " {loop $itm ($[COL]->get_items('DB')) " {next $itm->get_first('B_DEDICATED') " var $pth = concat('COL/',$itm->get_path) " call push(@itm,incr($cnt),$itm->get_first('T_TITLE',$pth)) " call push(@rsp,$cnt,$pth) " call push(@all,$pth) " call push(@mnu,$cnt) " } " } " else " {loop $itm ($[COL]->get_items('DB')) " {var $pth = concat('COL/',$itm->get_path) " call push(@itm,incr($cnt),$itm->get_first('T_TITLE',$pth)) " call push(@rsp,$cnt,$pth) " next $itm->get_first('B_DEDICATED') " call push(@mnu,$cnt) " } " } "} " "# Determine the menu items and responses "var @add = ('D|Define a new database target|+|-') "if $cnt " call push(@add,'E|Edit a database target|-|-') "if ${B_ADMIN_END} "{if $cnt " call unshift(@add,'A|All database targets|*|-') " call push(@add,'N|No database targets|.|-') " var ${AUX.bef} = ${T_ADMIN_BEFORE:'Select a database target list:'} " var ${AUX.opt} = false " var ${AUX.pck} = true "} "else "{var ${AUX.bef} = ${T_ADMIN_BEFORE:'Select a database target:'} " var ${AUX.err} = 'Invalid entry' " var ${AUX.inp} = 'Enter the item number or the action letter.' " var ${AUX.opt} = cond($cnt,false,true) "} "var ${AUX.add} = [@add] "var ${AUX.itm} = [@itm] "var ${AUX.rsp} = [@rsp] } [add_target] typ=T dft="COL/${NXT.DB:${K_ADMIN_PARENT}}" dsc='Determine the identifier for a new target' nam=-T_ADMIN_VALUE [all_targets] typ=T dft=(@all) dsc='Select all targets' end='' nam=-T_ADMIN_VALUE [no_targets] typ=T dft=() dsc='Select no targets' end='' nam=-T_ADMIN_VALUE