天天看點

備份打開的資料庫腳本

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.備份目前控制檔案。