简单的用户管理模式下冷备&热备脚本

cold_backup.cmd:

rem /Ss删除 /Q不提示
RMDIR /S /Q D:\backup_dir\
rem 创建一个备份的目录
MKDIR D:\backup_dir\
rem 设置oracle_si环境变量
set oracle_sid=ymh
rem 关闭显示
echo off
rem 用sys用户登陆并执行SQL脚本,@cold_backup,默认是.sql格式的
sqlplus "sys/ymh as sysdba" @cold_backup

cold_backup.sql

--去头
set heading off
--去尾 
set feedback off
--设置每行显示
set linesize 121
--不显示命令的执行结果
set termout off 
--生成备份的sql,并保存到d:\01.log
spool d:\01.log
--备份所有的数据文件
select '--'||ts.name tsname,'host copy '||df.name||' D:\backup_dir\'
   ||substr(df.name,instr(df.name,'\',-1) + 1)
from v$datafile df,v$tablespace ts
where ts.ts# not in (select distinct ts# from v$tempfile)
  and df.ts# = ts.ts#
  order by 1;
--备份所有的控制文件
select 'host copy '||name||' D:\backup_dir\' from v$controlfile;
spool off
--生成恢复的sql,并保存到d:\02.log
spool d:\02.log
--生成恢复数据文件的脚本
select '--'||ts.name tsname,'host copy D:\backup_dir\'||substr(df.name,instr(df.name,'\',-1) + 1)||' '||df.name
from v$datafile df,v$tablespace ts
where ts.ts# not in (select distinct ts# from v$tempfile)
  and df.ts# = ts.ts#
  order by 1;
--生成恢复控制文件的脚本
select 'host copy D:\backup_dir\'||substr(name,instr(name,'\',-1) + 1)||' '||name from v$controlfile;
spool off
--执行自动冷备份
--一致性关闭
shutdown immediate
--执行物理拷贝的脚本
@d:\01.log
--一打开
startup
--退出
exit


--------------------------------------------------------------------------------


hot_backup.cmd:

rem /Ss删除 /Q不提示
RMDIR /S /Q D:\backup_dir\
rem 创建一个备份的目录
MKDIR D:\backup_dir\
rem 设置oracle_si环境变量
set oracle_sid=ymh
rem 关闭显示
echo off
rem 用sys用户登陆并执行SQL脚本,@hot_backup,默认是.sql格式的
sqlplus "sys/ymh as sysdba" @hot_backup

hot_backup.sql:

--去头
set heading off 
--去尾
set feedback on
--设置每行显示
set linesize 121
--不显示命令的执行结果
set termout on
--打开输出
set serveroutput on
--让所有表空间进入begin backup:alter tablespace XXX begin backup
begin                                                                                    
for x in ( select tablespace_name from dba_tablespaces where contents <> 'TEMPORARY' )   
loop                                                                                     
        dbms_output.put_line( 'alter tablespace ' || x.tablespace_name || ' begin backup');  
        execute immediate 'alter tablespace ' || x.tablespace_name || ' begin backup';     
end loop;       
end;
/
set heading off 
set feedback off
set linesize 121
set termout off 
--生成备份的sql,并保存到d:\01.log
spool d:\01.log
--备份所有的数据文件
select '--'||ts.name tsname,'host copy '||df.name||' D:\backup_dir\'
   ||substr(df.name,instr(df.name,'\',-1) + 1)
from v$datafile df,v$tablespace ts
where ts.ts# not in (select distinct ts# from v$tempfile)
  and df.ts# = ts.ts#
  order by 1;
--备份所有的控制文件
select 'host copy '||name||' D:\backup_dir\' from v$controlfile;
spool off
--生成恢复的sql,并保存到d:\02.log
spool d:\02.log
--生成恢复数据文件的脚本
select '--'||ts.name tsname,'host copy D:\backup_dir\'||substr(df.name,instr(df.name,'\',-1) + 1)||' '||df.name
from v$datafile df,v$tablespace ts
where ts.ts# not in (select distinct ts# from v$tempfile)
  and df.ts# = ts.ts#
  order by 1;
--生成恢复控制文件的脚本
select 'host copy D:\backup_dir\'||substr(name,instr(name,'\',-1) + 1)||' '||name from v$controlfile;
spool off
--执行自动热备份
@d:\01.log
set termout on
begin                                                                                   
for x in ( select tablespace_name from dba_tablespaces where contents <> 'TEMPORARY' )  
loop                                                                                    
        dbms_output.put_line( 'alter tablespace ' || x.tablespace_name || ' end backup');
        execute immediate 'alter tablespace ' || x.tablespace_name || ' end backup';    
end loop;                                                                               
end;
/
alter system archive log current;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ye_minhua

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值