使用oracle调度rman备份_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2108 | 回复: 0   主题: 使用oracle调度rman备份        下一篇 
wlcbhrss
注册用户
等级:新兵
经验:68
发帖:65
精华:0
注册:2011-8-21
状态:离线
发送短消息息给wlcbhrss 加好友    发送短消息息给wlcbhrss 发消息
发表于: IP:您无权察看 2015-6-16 17:37:01 | [全部帖] [楼主帖] 楼主

实现的思路( 以windows为例):由于HA在某一个时刻只有一个节点作为主节点对外提供服务,排他地拥有共享存储,故如果将实现rman备份的代码和批处理文件存放在共享存储上,则无论是哪个节点作为主节点,由oracle发起的调度都可以寻找得到批处理文件和备份代码,加上使用oracle自带的dbms_scheduler调度作业,只要oracle没宕掉,就可以比较理想的实现备份。

以下为具体的实现:

首先创建一个批处理文件E:\BACKUP\RMAN_backup_script.bat,内容为

 **********************************************************************************************
RMAN target sys/sys@test nocatalog cmdfile=e:\backup\rman.txt
>>e:\backup\rman_log_%date:~0,4%%date:~5,2%%date:~8,2%.log
**********************************************************************************************


注意如果是windows2008,调用bat文件的rman必须写绝对路径,即$ORACLE_HOME/bin/rman.exe,否则可能会提示rman不是可识别的可执行文件。

然后实现cmdfile,即rman所调用的文件e:\backup\rman.txt,备份脚本如下所示:

**********************************************************************************************
RUN{
      ALLOCATE CHANNEL C1 TYPE DISK;
      CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
      SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
      BACKUP ARCHIVELOG ALL FORMAT 'E:\BACKUP\ARCHIVE_%d_%t_%s_%p.BAK' DELETE ALL INPUT;
      BACKUP DATABASE FORMAT 'E:\BACKUP\DB_BACKUP_%d_%s_%T.BAK';
      BACKUP SPFILE FORMAT 'E:\BACKUP\SPFILE_%U.BAK';
      BACKUP CURRENT CONTROLFILE FORMAT 'E:\BACKUP\CONTROL_FILE_%d_%f_%t.BAK';
      CROSSCHECK BACKUP;
      DELETE NOPROMPT OBSOLETE;
      DELETE NOPROMPT EXPIRED BACKUP;
      SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
      BACKUP ARCHIVELOG ALL FORMAT 'E:\BACKUP\ARCHIVE_%d_%t_%s_%p.BAK' DELETE ALL INPUT;
      RELEASE CHANNEL C1;
}
**********************************************************************************************


   最后实现oracle调度作业的创建,比如现需要通过oracle进行定期(周一到周五的早上9点10分)调度批处理文件进行备份操作,使用dbms_scheduler的脚本如下:

 ***************************************************************************************************
begin
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT=''yyyy-mm-dd hh24:mi:ss''';
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_LANGUAGE=''AMERICAN''';
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_LANGUAGE=''AMERICAN''';
EXECUTE IMMEDIATE 'alter session set NLS_TIMESTAMP_TZ_FORMAT=''DD-MM-RR HH.MI.SSXFF AM TZR''';
dbms_scheduler.create_job(
job_name => 'BACKUP_JOB',
job_type => 'EXECUTABLE',
job_action => 'c:\windows\system32\cmd.exe /c E:\BACKUP\RMAN_backup_script.bat >nul',
start_date => '20-03-2013 3:7.00 PM +8:00',
repeat_interval => 'freq=daily;byday=MON,TUE,WED,THU,FRI;byhour=9;byminute=10;bysecond=0');
DBMS_SCHEDULER.enable('BACKUP_JOB');
DBMS_SCHEDULER.SET_ATTRIBUTE('BACKUP_JOB','RESTARTABLE',TRUE);
end;
***************************************************************************************************


   注意如果是windows上的oracle实例,还需开启OracleJobSchedulerSID服务方能正常进行作业调度。

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论