linux下oracle熱備份指令碼

mengzhaoliang發表於2008-03-10
環境:linux redhat 5     oracle 10.2.0.1 

備份指令碼:open_backup.sql     所在目錄:/u01/open_backup

指令碼內容:



set feedback off pagesize 0 heading off verify off linesize 100 trimspool on
define dir='/u01/open_backup'
define fil='/u01/open_backup/open_backup_commands.sql'
define spo='&dir/open_backup_output.lst'
prompt *** Spooling to &fil
set serveroutput on
spool &fil
prompt spool &spo
prompt archive log list;;
prompt alter system switch logfile;;
DECLARE
  CURSOR cur_tablespace IS
    SELECT tablespace_name FROM dba_tablespaces WHERE status <> 'READ ONLY';
  CURSOR cur_datafile (tn VARCHAR) IS
    SELECT file_name
      FROM dba_data_files
  WHERE tablespace_name=tn;
  BEGIN
    FOR ct IN cur_tablespace LOOP
      dbms_output.put_line('alter tablespace '||ct.tablespace_name ||' begin backup;');
      FOR cd IN cur_datafile(ct.tablespace_name) LOOP
         dbms_output.put_line('host cp '||cd.file_name ||' &dir');
      END LOOP;
      dbms_output.put_line('alter tablespace '||ct.tablespace_name||' end backup;');
    END LOOP;
  END;
/
prompt alter system switch logfile;;
prompt alter database backup controlfile to '&dir/backup.ctl' REUSE;;
prompt archive log list;;
prompt spool off;;
spool off;
@&fil



經過測試,可以成功執行.

在資料庫執行狀態備份資料,執行sqlplus>@/u01/open_backup.sql 即可


如果需要備份引數檔案的話:
如:
SQL> create pfile='/u01/open_backup/initorcl.ora' from spfile='/u01/app/oracle/product/10.2.0/db_1/dbs/spfileorcl.ora';





建立歸檔檔案指令碼:archive_backup.sql
目錄:/u01/open_backup/archive/目錄下:

內容:
define dir='/u01/open_backup/archive'
define fil='/u01/open_backup/archive/archive_backup_commands.sql'
spool &fil
prompt archive log next;;
select 'host mv '||name ||' &dir'
from v$archived_log
where completion_time>=trunc(sysdate)-1
 and completion_time  spool off;
@&fil


在資料庫open下執行
SQL>@/u01/open_backup/archive/archive_backup.sql

即可

把昨天的歸檔的所有日誌移動到/u01/open_backup/archive/目錄下


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

相關文章