1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 通过oracle任务计划定期备份数据库

通过oracle任务计划定期备份数据库

时间:2019-05-08 06:33:39

相关推荐

通过oracle任务计划定期备份数据库

数据库|mysql教程

oracle,数据库,操作系统,计划,资料库

数据库-mysql教程

久久源码网主站程序,vscode提示版本出错,ubuntu 怎么打开,tomcat 查进程,sqlite3 行转列,户外怎么样监测爬虫信息,php 数据库路径,迈步者seo 推广,百度网站模板,jquery 网页 源代码,cpa 模板lzw

之前涉及到oracle定期备份的问题走的都是操作系统层面的任务计划,下面用oracle的taskscheduler定期执行oracle的备份,详细步骤见下:1备份语句/oracle/bak/full

客户跟踪php源码,ubuntu-mate镜像,天眼查爬虫403,php ntptime,seo回国了吗lzw

unity拼图游戏源码,vscode运行时出现连接,ubuntu 磁盘软件,tomcat总是闪退,爬虫操作游戏,php和mysql配置,百度排名医院seolzw

之前涉及到oracle定期备份的问题走的都是操作系统层面的任务计划,下面用oracle的task scheduler 定期执行oracle的备份,详细步骤见下:

1 备份语句/oracle/bak/fullbk.txt如下:

[oracle@dest ~]$ cat /oracle/bak/fullbk.txt

run{

delete noprompt obsolete; # 以不提示的方式删除状态为obsolete的备份(注意备份是否obsolete和备份保留策略有关)

crosscheck backup; # 校验rman资料库中记录的备份是否存在于磁盘或物理设备上,如果不存在,,则更改rman资料库中该备份记录为expired状态

delete noprompt expired backup; # 以不提示的方式删除rman资料库中所有标记为expired状态的记录

crosscheck archivelog all;# 校验rman资料库中所有归档记录,对在物理设备上不存在的归档,在rman资料库中更新其标记为expired

delete noprompt expired archivelog all; #以不提示的方式删除rman资料库中所有标记为expired状态的归档记录

backup incremental level=0 database format ‘/backup/crm/full-%T-%U.bak’; #做一个0级别的数据库全备份

backup archivelog all format ‘/backup/crm/arch-%T-%U.bak’; #备份所有归档

backup current controlfile format ‘/backup/crm/ctl-%T-%U.bak’; #备份当前控制文件

backup spfile format ‘/backup/crm/spf-%T-%U.bak’; # 备份参数文件

delete noprompt archivelog all completed before ‘SYSDATE – 7’; # 以不提示的方式删除7天之前的所有归档

}

注意 以上脚本仅仅是为测试,该脚本对于从上一次全备份到数据库当前状态丢失了一部分归档,或者归档损坏的情况,是无法进行完全恢复的。

2 备份脚本/oracle/bak/rman.sh如下:

[oracle@dest ~]$ cat /oracle/bak/rman.sh

#!/bin/bash

export today=`date +%Y%m%d%H%M`

export ORACLE_HOME=/oracle/app/db1

export ORACLE_SID=CRM

$ORACLE_HOME/bin/rman target sys/DHHZDHHZ log=/oracle/bak/crm.log cmdfile=/oracle/bak/fullbk.txt

mv /oracle/bak/crm.log “/oracle/bak/crm${today}.log”

此脚本让rman调用/oracle/bak/fullbk.txt文本中的备份语句,记录当前备份过程于日志文件,并更改生成的日志文件名为当前日期。

3 在oracle中创建program

begin

dbms_scheduler.create_program (

program_name =>’oracle_bk_program’,

program_action =>’/oracle/bak/rman.sh’,

program_type =>’EXECUTABLE’,

enabled=>true,

comments=>’oracle.sh’);

end;

/

查询我们刚刚创建的program如下

select program_name,program_type,program_action,number_of_arguments,enabled from user_scheduler_programs where program_name=’ORACLE_BK_PROGRAM’;

PROGRAM_NAME PROGRAM_TYPEPROGRAM_ACTIONNUMBER_OF_ARGUMENTS ENABL

——————- —————- ———————- ——————- —–

ORACLE_BK_PROGRAMEXECUTABLE /oracle/bak/rman.sh 0 TRUE

注意如果要修改程序,job或者shceduler则可用如下语句

BEGIN

DBMS_SCHEDULER.SET_ATTRIBUTE (

name => ”,

attribute=> ”,

value=> ”);

END;

/

如下:

BEGIN

DBMS_SCHEDULER.SET_ATTRIBUTE (

name => ‘oracle_bk_schedule’,

attribute=> ‘repeat_interval’,

value=> ‘FREQ=DAILY;BYHOUR=15,16,17’);

END;

/

4 创建一个scheduler

begin

dbms_scheduler.create_schedule(

schedule_name =>’oracle_bk_schedule’,

repeat_interval =>’FREQ=DAILY;BYHOUR=15,16,17′,

comments =>’backup start 3pm’);

end;

/

查选我们刚刚创建的scheduler如下:

SQL> select schedule_name,repeat_interval from user_scheduler_schedules where schedule_name=’ORACLE_BK_SCHEDULE’;

SCHEDULE_NAME REPEAT_INTERVAL

—————————— ————————————————————

ORACLE_BK_SCHEDULE FREQ=DAILY;BYHOUR=17

5 创建一个job,在job中引用创建的程序和scheduler

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。