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

  • From: "Elliott, Patrick" <patrick.elliott@xxxxxxxxxxxxx>
  • To: "JSweetser@xxxxxxxx" <JSweetser@xxxxxxxx>, "sbootsma@xxxxxxxxxxxxxx" <sbootsma@xxxxxxxxxxxxxx>, "oracle-l@xxxxxxxxxxxxx" <oracle-l@xxxxxxxxxxxxx>
  • Date: Mon, 25 Feb 2008 12:47:15 -0600

One way to accomplish this is to "CONFIGURE" the backup you want to execute in 
the database.  Then your rman script just needs "backup database".  All of the 
other settings are stored in the control file.  Look up the syntax for the 
"CONFIGURE" command.


-----Original Message-----
From: oracle-l-bounce@xxxxxxxxxxxxx [mailto:oracle-l-bounce@xxxxxxxxxxxxx] On 
Behalf Of Sweetser, Joe
Sent: Monday, February 25, 2008 12:10 PM
To: sbootsma@xxxxxxxxxxxxxx; oracle-l@xxxxxxxxxxxxx
Subject: RE: Can I pass a parameter into an RMAN Script?

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.


# Set correct Oracle environment
export ORACLE_BASE=/opt/app/oracle

# Set the RMAN environment
RMAN=rman       # RMAN executable name
RMAN_USER=rman  # Owner of the RMAN schema RMAN_PWRD=rman  # Password for the 
RMAN_TNS=rcat   # tnsname for the recovery catalog database

# Miscellaneous
HOST=`hostname -s`

# 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`
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 "% ${ORACLE_HOME}/bin/$RMAN cmdfile '$RMAN_SCRIPT'"



And the RMAN script is:
connect target /
connect rcvcat rman/rman@rcat

run {
allocate channel c1 type disk;
sql 'alter system switch logfile';
  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, 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.


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.



Information transmitted by this email is proprietary to Medtronic and is 
intended for use only by the individual or entity to which it is addressed, and 
may contain information that is private, privileged, confidential or exempt 
from disclosure under applicable law. If you are not the intended recipient or 
it appears that this mail has been forwarded to you without proper authority, 
you are notified that any use or dissemination of this information in any 
manner is strictly prohibited. In such cases, please delete this mail from your 
To view this notice in other languages you can either select the following link 
or manually copy and paste the link into the address bar of a web browser:

Other related posts: