SET feedback OFF
SET pagesize 0
SET heading OFF
SET verify OFF
SET linesize 100
SET trimspool ON
define dir = 'c:\oracle\oradata\backup'
define fil = '&dir\backup_commands.sql'
define spo = '&dir\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 spool OFF;;
spool OFF;
@&fil
建立資料庫中所有檔案的一個熱備份,準備生成的找開的資料庫腳本将完成以下工作:
1.切換日志檔案,確定在備份前所做的所有更改都已被歸檔。
2.将一個表空間設定為熱備份模式。
3.用作業系統指令拷貝表空間中的檔案。
4.将該表空間脫離熱備份模式。
5.對于每個表空間,重複步驟2-4。
6.切換日志檔案,確定備份後所做的所有更改都已被歸檔。
7.備份目前控制檔案。