您的位置:首页 > 数据库 > Oracle

Useful and Simple srcipts for Oracle CoolBackup

2014-01-16 14:55 344 查看

Useful and Simple srcipts for Oracle CoolBackup

过去很少有机会需要在生产环境中使用冷备。而且在大家印象中,拷贝也是很简单的事情。但事实上,客户的环境可能“千变万化”或者规划不清晰的时候,我们很容易漏掉其中的某个部分,准备的脚本无法通用,临时编辑,查找漏掉的文件,记录已经拷贝的文件.......而手忙脚乱。

因此即使是冷备,我们也需要通用,简单、可靠的方法。 这次临时准备的脚本,在 Dataguard Disaster Recovery test 中帮我省了很多麻烦。

set feedback off; -- 禁止回显sql命令处理的记录条数(缺省为on)

set heading off; -- 禁止输出标题(缺省为on)

set trimspool on; -- 去除spool输出结果中每行的结尾空格(缺省为on)

set pagesize 0; -- 禁止分页输出

set linesize 1000; -- 设置每行的字符输出个数为1000,放置换行(缺省为80 )

set echo off; -- 不显示脚本中的每个sql命令(缺省为on)

冷备存放的目录最好单独创建,每个database存放在单独的目录:

mkdir -p /u01/coolbackup/test3/ --need modify!!

mkdir -p /u01/coolbackup/DB2/ --need modify!!

mkdir -p /u01/coolbackup/DB3/ --need modify!!

冷备:

vi /u01/coolbackup/lb_test3.sql --need modify!!

set feedback off verify off trimspool off

set heading off

set pagesize 0

set linesize 200

define dir='/u01/coolbackup/test3/' --need modify!!

define lb='/u01/coolbackup/lb_test3.sh' --need modify!!

spool &lb

select '! cp ' || name || ' &dir' from v$datafile order by 1;

select '! cp ' || member || ' &dir' from v$logfile order by 1;

select '! cp ' || name || ' &dir' from v$controlfile order by 1;

select '! cp ' || name || ' &dir' from v$tempfile order by 1;

spool off

shutdown immediate

@&lb

Startup mount

冷备恢复: (注意从字符串右侧开始检测特定字符的方法)

vi /u01/coolbackup/lhf_test3.sql --need modify!!

set feedback off verify off trimspool off

set heading off

set pagesize 0

set linesize 200

define dir='/u01/coolbackup/test3/' --need modify!!

define lhf='/u01/coolbackup/lhf_test3.sh' --need modify!!

spool &lhf

select '! cp '|| ' &dir' || substr(name,instr(name,'/',-1,1)+1,100)||' '||substr(name,1,instr(name,'/',-1,1)) from v$datafile order by 1;

select '! cp '|| ' &dir' || substr(member,instr(member,'/',-1,1)+1,100)||' '||substr(member,1,instr(member,'/',-1,1)) from v$logfile order by 1;

select '! cp '|| ' &dir' || substr(name,instr(name,'/',-1,1)+1,100)||' '||substr(name,1,instr(name,'/',-1,1)) from v$controlfile order by 1;

select '! cp '|| ' &dir' || substr(name,instr(name,'/',-1,1)+1,100)||' '||substr(name,1,instr(name,'/',-1,1)) from v$tempfile order by 1;

spool off

shutdown immediate

@&lhf

Startup mount

这样不管数据文件、控制文件、在线日志、standby日志被扔到那个角落,我们全部可以准确找到其位置并拷贝至指定目录,或者将备份文件准确的放回原路径。

一个脚本可多次重复执行是很重要的。当然这也完全没有问题。

特此记录。

参考:

练习冷备份时的杂想

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐