Rman的映象拷貝指令碼

BTxigua發表於2007-08-18

#!/bin/sh

#
# define backup directory
#
export BACKUP_DIR=/backup/rman
export BACKUP_SCRIPT_DIR=/home/oracle/niyl

#
#create backup script file by sql spool
#

[@more@]sqlplus /nolog <connect /as sysdba
set feedback off pagesize 0 heading off verify off
set linesize 100 trimspool on
set serveroutput on
spool $BACKUP_SCRIPT_DIR/temp.rcv
declare
cursor c_datafile is
select file_id fid,substr(file_name,(instr(file_name,'/',-1)+1)) fname from dba_data_files;
begin
dbms_output.put_line('run {');
dbms_output.put_line('allocate channel d1 type disk ; ');
dbms_output.put_line('allocate channel d2 type disk ; ');
dbms_output.put_line('copy ');
for p_df in c_datafile loop
dbms_output.put_line(' datafile '||p_df.fid||' to '||''''||'$BACKUP_DIR/'||p_df.fname||'.bak'||''''||',');
end loop;
dbms_output.put_line('current controlfile to ''$BACKUP_DIR/ctl.bak'';');
dbms_output.put_line('release channel d1;');
dbms_output.put_line('release channel d2;');
dbms_output.put_line('}');
dbms_output.put_line('exit ;');
end ;
/
spool off;
host cat $BACKUP_SCRIPT_DIR/temp.rcv|grep -v "^[ ]{1,3}[0-9]" | grep -v "SQL>" >$BACKUP_SCRIPT_DIR/rman_image_copy.rcv
exit
!EOF

rm -f $BACKUP_SCRIPT_DIR/temp.rcv

#
# begin backup
#
#rman<#connect target sys/admin@test
#connect catalog rman9204/rman9204
rman target sys/admin nocatalog <@$BACKUP_SCRIPT_DIR/rman_image_copy.rcv
list copy of database;
!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10867315/viewspace-963993/,如需轉載,請註明出處,否則將追究法律責任。

相關文章