經(jīng)過大家的幫助,終于寫好了這個自動備份數(shù)據(jù)文件的腳本,腳本特點是自動備份一個數(shù)據(jù)庫中的數(shù)據(jù)文件,不需要知道數(shù)據(jù)庫有些什么表空間,或者數(shù)據(jù)文件,腳本編寫的還很不美觀,先用著,慢慢美化吧,另外archive備份部分也暫時沒有備,倉促編程,有什么問題請指正! 注意本腳本是應(yīng)用于archive log模式下的,另外數(shù)據(jù)庫的用戶名密碼,自己在腳本里改一下,腳本是帶參數(shù)的,參數(shù)是備份的目標(biāo)目錄,注意要有寫權(quán)限。#!/bin/sh mypath=$1 if [ -z $mypath ] ; then echo ‘Please Use This Command Like ./backup /u01/backup‘ else if [ -d $mypath ] ; then ORACLE_SID=dzzd; export ORACLE_SID ORAENV_ASK=NO; export ORAENV_ASK rm -Rf aa.txt sqlplus -s "system/oracle9i"<<EOF set head off set feedback off spool aa.txt select tablespace_name from dba_tablespaces; spool off EXIT EOF for spacename in `cat aa.txt` do echo $spacename |grep "^TEMP" if [ "$?" -eq "0" ] then echo TEMP no need backup else else echo begin backup $spacename sqlplus -s system/oracle9i<<SETSTA alter tablespace $spacename begin backup; EXIT SETSTA rm -Rf bb.txt sqlplus -s system/oracle9i<<DATAFILE1 set head off set feedback off spool bb.txt SELECT ‘cp ‘||file_name||‘ $mypath‘||SUBSTR(FILE_NAME,INSTR(FILE_NAME,‘/‘,-1,1)) FROM dba_data_files where tablespace_name=trim(‘$spacename‘); spool off EXIT DATAFILE1 sh bb.txt sqlplus -s system/oracle9i<<SETSTA alter tablespace $spacename end backup; EXIT SETSTA echo end backup $spacename fi done else echo "Please Input a Right Direction" fi fi
|
|