天天看点

备份打开的数据库脚本

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.备份当前控制文件。