Oracle冷备和热备脚本

冷备脚本:

​set​​ ​​feedback ​​​​off​

​set​​ ​​heading ​​​​off​

​set​​ ​​verify  ​​​​off​

​set​​ ​​trimspool ​​​​off​

​set​​ ​​echo ​​​​off​

​set​​ ​​time​​ ​​off​

​set​​ ​​timing ​​​​off​

​set​​ ​​pagesize 0​

​set​​ ​​linesize 200​

​define dir=​​​​'/backup/cold/mike'​​​​;​

​define diroutmike=​​​​'/u01/scripts/coldscr/mikecoldout.sql'​​​​;​

​spool &diroutmike​

​select​​ ​​'!cp '​​​​||​​​​name​​​​||​​​​' &dir'​​ ​​from​​ ​​v$datafile ​​​​order​​ ​​by​​ ​​file#;​

​select​​ ​​'!cp '​​​​||​​​​name​​​​||​​​​' &dir'​​ ​​from​​ ​​v$controlfile;​

​spool ​​​​off​​​​;​

​shutdown immediate;​

​@&diroutmike​

​startup;​

以上脚本放在/u01/scripts/coldscr/mikecold.sql

在数据库运行时可以运行此脚本来冷备。

热备脚本:

​set​​ ​​feedback ​​​​off​

​set​​ ​​pagesize 0 ​

​set​​ ​​heading ​​​​off​

​set​​ ​​verify ​​​​off​

​set​​ ​​linesize 100 ​

​set​​ ​​trimspool ​​​​on​

​set​​ ​​echo ​​​​off​

​set​​ ​​time​​ ​​off​

​set​​ ​​timing ​​​​off​

​undefine mikedir​

​undefine mikescp​

​define mikedir=​​​​'/backup/hot'​

​define mikescp=​​​​'/u01/scripts/hotscr/mikehotout.sql'​

​declare​

​cursor​​ ​​cur_tablespace ​​​​is​​ ​​select​​ ​​tablespace_name ​​​​from​​ ​​dba_tablespaces ​​​​where​​ ​​status <> ​​​​'READ ONLY'​​ ​​a​

​nd contents ​​​​not​​ ​​like​​ ​​'%TEMP%'​​​​;​

​cursor​​ ​​cur_datafile(tn varchar2) ​​​​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(​​​​'! cp '​​​​||cd.file_name||​​​​' &mikedir'​​​​);​

​end​​ ​​loop;​

​dbms_output.put_line(​​​​'alter tablespace '​​​​||ct.tablespace_name||​​​​' end backup;'​​​​);​

​end​​ ​​loop;​

​end​​​​;​

​/​

以上脚本放在/u01/scripts/hotscr/mikehot.sql

在数据库运行时可以运行此脚本来热备。