备份的脚本代码:
#!/bin/bash
backup_dir=/oracle/bakup
log_file=$ORACLE_BASE/admin/$ORACLE_SID/cold_backup_$ORACLE_SID.log
echo "Beginning coldbackup...">$log_file
date>>$log_file
sqlplus -s / as sysdba<<EOF>$log_file
set pagesize 0
set linesize 1000
spool file_copy_$ORACLE_SID.sh
select 'cp '||name||' $backup_dir/' from v\$controlfile;
select 'cp '||file_name||' $backup_dir/' from dba_data_files;
select 'cp '||member||' $backup_dir/' from v\$logfile;
spool off
shutdown immediate
!bash file_copy_$ORACLE_SID.sh
startup
exit;
EOF
rm -f file_copy_$ORACLE_SID.sh
if [ -e $ORACLE_HOME/dbs/init$ORACLE_SID.ora ]
then
cp $ORACLE_HOME/dbs/init$ORACLE_SID.ora $backup_dir/
fi
if [ -e $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora ]
then
cp $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora $backup_dir/
fi
if [ -e $ORACLE_HOME/dbs/orapw$ORACLE_SID ]
then
cp $ORACLE_HOME/dbs/orapw$ORACLE_SID $backup_dir/
fi
echo "Cold backupfinished.">>$log_file
date>>$log_file