Oracle物理熱備份指令碼(ZT)

rongshiyuan發表於2012-05-24

http://hi.baidu.com/edeed/blog/item/0fb9526684b6d327ab184c8c.html

Rem 熱備份指令碼
Rem 執行該指令碼必須保證資料庫處於歸檔模式
Rem 張樂奕 2004-3-24

Rem
Rem 設定SQL*Plus環境引數
Rem

set feedback off
set pagesize 0
set heading off
set verify off
set linesize 100
set trimspool on

Rem 設定需要使用的SQL*Plus使用者變數
Rem for Windows
define dir = 'E:\oracle\oradata.bak\hotbak'
define fil = '.\open_backup_commands.sql'
define spo = '&dir\open_backup_output.lst'
define cpy = 'copy'

Rem 設定Linux環境中的SQL*Plus使用者變數
Rem define dir = '/oradata/PRACTICE/backup/user/ch05'
Rem define fil = '/tmp/open_backup_commands.sql'
Rem define spo = '&dir/open_backup_output.lst'
Rem define cpy = 'cp'

prompt *** Spooling to &fil

Rem 產生備份命令指令碼檔案

set serveroutput on
spool &fil
prompt spool &spo
prompt archive log list;;
prompt alter system switch logfile;;
prompt alter system archive log all;;

DECLARE
CURSOR cur_tablespace IS
SELECT tablespace_name
FROM dba_tablespaces;

CURSOR cur_datafile (tn VARCHAR) IS
SELECT file_name
FROM dba_data_files
WHERE tablespace_name = tn;
BEGIN
FOR ct IN cur_tablespace LOOP
IF ct.tablespace_name!='TEMP' then
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 &cpy '||cd.file_name||' &dir');
END LOOP;
dbms_output.put_line ('alter tablespace '||ct.tablespace_name||' end backup;');
end if;
END LOOP;

END;
/

prompt alter system switch logfile;;
prompt alter database backup controlfile to '&dir\backcontrol.ctl' REUSE;;

prompt archive log list;;
prompt spool off
spool off;

Rem 執行生成的指令碼檔案

@&fil

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

相關文章