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

From: Bradd Piontek <piontekdd_at_gmail.com>
Date: Mon, 25 Feb 2008 12:21:49 -0600
Message-ID: <e9569ef30802251021w78fbcf9bubc61022c4de814c0@mail.gmail.com>


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_at_icat.com> 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_at_icat.com
> 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_at_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_at_freelists.org
> [mailto:oracle-l-bounce_at_freelists.org] On Behalf Of Sam Bootsma
> Sent: Monday, February 25, 2008 10:45 AM
> To: oracle-l_at_freelists.org
> 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_at_georgebrown.ca <mailto:sbootsma_at_georgebrown.ca>
>
>
>
>
> 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.
>
> --
> http://www.freelists.org/webpage/oracle-l
>
>
>

--
http://www.freelists.org/webpage/oracle-l
Received on Mon Feb 25 2008 - 12:21:49 CST

Original text of this message