# needs the oravars8 file defined # needs the set$ORACLE_SID defined . /var/opt/oracle/oravars8 . $SCRPT/set$1 if [ $# -eq 0 ] then echo "Script Usage : online_bkp \$ORACLE_SID " exit fi if [ ! "$BACKUP" ] then echo BACKUP env variable is not defined echo Aborting online backup exit 1 fi if [ ! -w . ] then echo "You don't have write access on working dir `pwd`." echo "Aborting online backup!" exit 1 fi ORACLE_SID=$1 . set$ORACLE_SID $ORACLE_HOME/bin/svrmgrl > /dev/null < /tmp/arc connect internal select log_mode from v\$database; EOF cat /tmp/arc |grep -w "ARCHIVELOG" if [ $? -eq 1 ] then echo Database is running in NOARCHIVELOG Mode echo CANNOT DO AN ONLINE BACKUP exit 1 fi BACKUP_SCRIPT=`basename $1`.sql echo "Generating backup script..." . set$ORACLE_SID $ORACLE_HOME/bin/svrmgrl > /dev/null << EOF connect internal set serveroutput on spool $BACKUP_SCRIPT declare cursor control_cursor is select name from v\$controlfile where rownum = 1; cursor tablespace_cursor is select tablespace_name from dba_tablespaces; cursor data_files_cursor(p_tablespace_name in varchar2) is select file_name from dba_data_files where tablespace_name = p_tablespace_name; n number; base_file_name varchar2(100); begin for i in tablespace_cursor loop dbms_output.put_line('Alter tablespace '||i.tablespace_name||' begin backup;'); for j in data_files_cursor(i.tablespace_name) loop base_file_name := substr(j.file_name, instr(j.file_name, '/', -1,1)+1); dbms_output.put_line('!cat '||j.file_name||' |compress > $BACKUP/${ORACLE_SID}/'||base_file_name||'.Z'); end loop; dbms_output.put_line('Alter tablespace '||i.tablespace_name||' end backup;'); end loop; for i in control_cursor loop dbms_output.put_line('!cp '||i.name||' $BACKUP/${ORACLE_SID}'); end loop; end; / EOF cat $BACKUP_SCRIPT |grep -v '^Statement' |grep -v '^$' > /tmp/online$USER.$ORACLE_SID cp /tmp/online$USER.$ORACLE_SID $BACKUP_SCRIPT egrep -v '^Alter|^.cp|^.cat' $BACKUP_SCRIPT if [ $? = 0 ] then cat $BACKUP_SCRIPT echo "The online_backup script $BACKUP_SCRIPT is corrupted. The database may not be running!" exit 1 fi if [ ! -f "$BACKUP_SCRIPT" ] then echo "Error: Generated backup script [$BACKUP_SCRIPT] is not found. Backup is aborted" exit 1 fi; #Create backup directory if not existing. if [ ! -d "$BACKUP/$ORACLE_SID" ] then mkdir $BACKUP/$ORACLE_SID chmod 775 $BACKUP/$ORACLE_SID fi rm -f $BACKUP/$ORACLE_SID/* echo "Starting backup for $ORACLE_SID , Please wait..." $ORACLE_HOME/bin/svrmgrl << EOF connect internal @$BACKUP_SCRIPT EOF rm -f $BACKUP_SCRIPT rm /tmp/arc echo "Backup for $ORACLE_SID Complete"
Hosted by www.Geocities.ws

1