Re: Can I pass a parameter into an RMAN Script?

  • From: "Bradd Piontek" <piontekdd@xxxxxxxxx>
  • To: JSweetser@xxxxxxxx
  • Date: Mon, 25 Feb 2008 12:21:49 -0600

The other alternative is to right a shell script and do all the RMAN work
INLINE

#/bin/ksh

$ORACLE_HOME/bin/rman << EOF
    connect TARGET ${my_target}
    connect CATALOG ${my_catalog}
    etc etc
EOF



On Mon, Feb 25, 2008 at 12:09 PM, Sweetser, Joe <JSweetser@xxxxxxxx> wrote:

> I've never figured out how to do that, if it's possible.  However, one
> workaround is to simply build the RMAN script each time you run a
> backup.  Then you can pass the parameter to the shell script.  Below is
> an example of what I do and though I don't pass in the ORACLE_SID, it
> could be easily modified to do that.  I also put the resultant script at
> the end.  Hope this formats correctly.
>
> -joe
>
> <snip>
> # Set correct Oracle environment
> export ORACLE_BASE=/opt/app/oracle
> export NLS_LANG=AMERICAN_AMERICA.UTF8
> export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
> ORACLE_HOME=/opt/app/oracle/product/10.2.0
> ORACLE_SID=iap1
> ORACLE_USER=oracle
> TNS_ADMIN=/var/opt/oracle
> export ORACLE_HOME ORACLE_SID ORACLE_USER TNS_ADMIN
>
> # Set the RMAN environment
> RMAN=rman       # RMAN executable name
> RMAN_USER=rman  # Owner of the RMAN schema
> RMAN_PWRD=rman  # Password for the RMAN_USER
> RMAN_TNS=rcat   # tnsname for the recovery catalog database
> RMAN_SCRIPT=/home/oracle/scripts/rman/rman_full.rcv
> export RMAN RMAN_USER RMAN_PWRD RMAN_TNS RMAN_SCRIPT
>
> # Miscellaneous
> SEND_TO=jsweetser@xxxxxxxx
> HOST=`hostname -s`
> export SEND_TO HOST
>
> # Build the recovery manager script to used.  The script is built here
> # to give greater control of the TAG name used in it.  This TAG is
> displayed
> # in RMAN commands like "list backup summary".
> echo "connect target /" > $RMAN_SCRIPT
> echo "connect rcvcat $RMAN_USER/$RMAN_PWRD@$RMAN_TNS" >> $RMAN_SCRIPT
> echo "" >> $RMAN_SCRIPT
> echo "run {" >> $RMAN_SCRIPT
> echo "allocate channel c1 type disk;" >> $RMAN_SCRIPT
> echo "sql 'alter system switch logfile';" >> $RMAN_SCRIPT
> echo "backup" >> $RMAN_SCRIPT
> echo "  incremental level 0" >> $RMAN_SCRIPT
> echo "  filesperset 10" >> $RMAN_SCRIPT
> echo "  format
> '/u04/oradata/backup/${ORACLE_SID}/data/${ORACLE_SID}_%U'" >>
> $RMAN_SCRIPT
>
> # Here is where we build the tag name
> DayOfWeek=`date +%w`
> case $DayOfWeek in
>    0) TAG=SUN_DB_L0_`date +%b_%d_%Y_%H%M%p`
>       ;;
>    1) TAG=MON_DB_L0_`date +%b_%d_%Y_%H%M%p`
>       ;;
>    2) TAG=TUE_DB_L0_`date +%b_%d_%Y_%H%M%p`
>       ;;
>    3) TAG=WED_DB_L0_`date +%b_%d_%Y_%H%M%p`
>       ;;
>    4) TAG=THU_DB_L0_`date +%b_%d_%Y_%H%M%p`
>       ;;
>    5) TAG=FRI_DB_L0_`date +%b_%d_%Y_%H%M%p`
>       ;;
>    6) TAG=SAT_DB_L0_`date +%b_%d_%Y_%H%M%p`
>       ;;
> esac
> echo "  tag $TAG" >> $RMAN_SCRIPT
>
> echo "  database plus archivelog delete input;" >> $RMAN_SCRIPT
>
> echo "sql 'alter database backup controlfile to trace';" >> $RMAN_SCRIPT
> echo "release channel c1;" >> $RMAN_SCRIPT
> echo "}" >> $RMAN_SCRIPT
>
> # Write the command we will use out to the log file.
> echo
> echo "% ${ORACLE_HOME}/bin/$RMAN cmdfile '$RMAN_SCRIPT'"
> echo
>
> ${ORACLE_HOME}/bin/$RMAN cmdfile "$RMAN_SCRIPT"
>
> RETURN_STATUS=$?
>
> And the RMAN script is:
> connect target /
> connect rcvcat rman/rman@rcat
>
> run {
> allocate channel c1 type disk;
> sql 'alter system switch logfile';
> backup
>  incremental level 0
>  filesperset 10
>  format '/u04/oradata/backup/iap1/data/iap1_%U'
>  tag MON_DB_L0_Feb_25_2008_0225AM
>  database plus archivelog delete input;
> sql 'alter database backup controlfile to trace';
> release channel c1;
> }
> ________________________________
>
> From: oracle-l-bounce@xxxxxxxxxxxxx
> [mailto:oracle-l-bounce@xxxxxxxxxxxxx] On Behalf Of Sam Bootsma
> Sent: Monday, February 25, 2008 10:45 AM
> To: oracle-l@xxxxxxxxxxxxx
> Subject: Can I pass a parameter into an RMAN Script?
>
>
>
> Hello all,
>
>
>
> Oracle 10.2.0.3, Enterprise Edition, on AIX 5.3.
>
>
>
> In our RMAN backup scripts for our AAA database we have several format
> lines that look like:
>
> format '/san2/orabackup/AAA/CTRL_%d_%T_%p_%s%t';
>
>
>
> The same lines for our BBB database looks like:
>
> format '/san2/orabackup/BBB/CTRL_%d_%T_%p_%s%t';
>
>
>
> Because of this difference in the format lines I need to create and
> maintain separate RMAN scripts for each database.  If I could pass a
> parameter into the RMAN script, then I could have just one RMAN script
> and call it with a parameter specifying the database name.
>
>
>
> Can anybody tell me if this is possible?  Or must I continue to create
> separate RMAN scripts for each database I wish to backup?  I checked the
> Oracle docs, but could not find anything that spoke to what I want to
> do.
>
>
>
> Thanks,
>
>
>
> Sam Bootsma
>
> Oracle Database Administrator
>
> Information Technology Services
> George Brown College
>
> Phone: 416-415-5000 x4933
> Fax: 416-415-4836
> E-mail: sbootsma@xxxxxxxxxxxxxx <mailto:sbootsma@xxxxxxxxxxxxxx>
>
>
>
>
> Confidentiality Note: This message contains information that may be
> confidential and/or privileged. If you are not the intended recipient, you
> should not use, copy, disclose, distribute or take any action based on this
> message. If you have received this message in error, please advise the
> sender immediately by reply email and delete this message. Although ICAT
> Managers, LLC scans e-mail and attachments for viruses, it does not
> guarantee that either are virus-free and accepts no liability for any damage
> sustained as a result of viruses.  Thank you.
>
> --
> //www.freelists.org/webpage/oracle-l
>
>
>

Other related posts: